博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
The Preliminary Contest for ICPC Asia Xuzhou 2019 G. Colorful String 回文树
阅读量:5029 次
发布时间:2019-06-12

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

签到提;

题意:求出每一个回文串的贡献 (贡献的计算就是回文串不同字符的个数)

 

题解:

用回文树直接暴力即可

回文树开一个数组cost[ ][26] 和val[ ] 数组;

val【i】表示回文树上节点 i 的对应的回文的贡献

 

最后统计答案即可

LL get_ans() {
LL ans = 0; for (int i = sz - 1; i >= 0; --i) ans += 1LL * cnt[i] * val[i]; return ans; }
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" = "<
<
= 0; --i)cnt[fail[i]] += cnt[i];101 //逆序累加,保证每个点都会比它的父亲节点先算完,于是父亲节点能加到所有子孙102 }103 104 LL get_ans() {105 LL ans = 0;106 for (int i = sz - 1; i >= 0; --i) ans += 1LL * cnt[i] * val[i];107 return ans;108 }109 } pam;110 111 int main() {112 FIN;113 sfs(s + 1);114 pam.init();115 int n = strlen(s + 1);116 for (int i = 1; i <= n; i++) {117 pam.add(s[i], i);118 }119 pam.count();120 LL ans = pam.get_ans();121 printf("%lld\n", ans);122 return 0;123 }
View Code

 

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

你可能感兴趣的文章
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
[CF508E] Arthur and Brackets
查看>>
[CF1029E] Tree with Small Distances
查看>>
tp5.0中及其常用方法的一些函数方法(自己看)和技巧(不断添加中)
查看>>
美团推荐算法实践
查看>>
poj 2948 Martian Mining 预处理前缀和,动态规划
查看>>
zoj 1516 Uncle Tom's Inherited Land 最大独立边集合(最大匹配)
查看>>
【Vue实战之路】一、Vue-cli入门及Vue工程目录全解。
查看>>
正则表达式-初入门槛
查看>>
讲座总结
查看>>
MySQL 数学函数
查看>>
复习题
查看>>
[修改远程桌面连接端口]
查看>>
20170605
查看>>
github自己用--(未完)
查看>>
软件测试工程师的技能树
查看>>
理解OAuth 2.0授权
查看>>
HTTP状态码整理
查看>>
回调函数
查看>>
快速检测一个点是否包含在一个2d三角形内
查看>>