博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Interesting HDU - 5785 回文树
阅读量:5030 次
发布时间:2019-06-12

本文共 1126 字,大约阅读时间需要 3 分钟。

题意:

找出所有【i,j】为回文串【j+1,k】也为回文串的i*k乘积之和。

题解:

设sum1【i】 为正着插入,到 i 的所有回文串的起始位置的前缀和,sum2【i】 表示反正插入的前缀和

ans+=sum1【i]*sum1【i+1】 

上面的式子很容易让我们想到两遍回文树正着和反着插入操作,

回文树的num【】表示到达 i 这个节点的回文串个数

我们用一个sum【i】数组到 i 的时候所有出现的回文串的长度的前缀和

sum1[i] = (1LL * (i + 1) * pam.num[pam.last] % mod - pam.sum[pam.last] + mod) % mod; 由于卡内存 ,所以我们就不记录sum2[]了
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 15 #define pi acos(-1.0) 16 #define eps 1e-9 17 #define fi first 18 #define se second 19 #define rtl rt<<1 20 #define rtr rt<<1|1 21 #define bug printf("******\n") 22 #define mem(a, b) memset(a,b,sizeof(a)) 23 #define name2str(x) #x 24 #define fuck(x) cout<<#x" = "<
<
= 1; i--) {106 pam.add(s[i]);107 ans = (ans + sum1[i - 1] * (1LL * (i - 1) * pam.num[pam.last] % mod + pam.sum[pam.last]) % mod) % mod;108 }109 printf("%lld\n", ans);110 }111 return 0;112 }
View Code

 

 

转载于:https://www.cnblogs.com/qldabiaoge/p/11403675.html

你可能感兴趣的文章
ArchLinux安装开源VMware Tools
查看>>
系统用户分析模型
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
jsp题库 (一)小测(25/21)
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
js获取标准北京时间
查看>>
DZ!NT论坛 3.6.711删除用户各种错解决方案
查看>>
C#微信登录-手机网站APP应用
查看>>
HTML5实践 -- iPhone Safari Viewport Scaling Bug
查看>>
一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议
查看>>
Python3.6.0安装
查看>>
hdu1049
查看>>
H5项目常见问题及注意事项
查看>>
索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
查看>>
时间模块 && time datetime
查看>>