2015 多校联赛 ——HDU5371(manacher + 枚举)
来源:互联网 发布:seo网络营销推广工资 编辑:程序博客网 时间:2024/06/05 10:43
Sample Input
1102 3 4 4 3 2 2 3 4 4
Sample Output
Case #1: 9要求找出一段数字。
将其分成3部分,第①和第②部分成回文字串,第②和第③部分成回文字串
用manacher算出各个点的回文后字串长度,然点枚举和半径(后部分稍不注意就超时 - -!!)
#include <cstdio>#include <iostream>#include <algorithm>#define MAXN 100010using namespace std;int n;int d[MAXN];int st[MAXN*2];int p[MAXN*2];int len;void manacher(){ int MaxId=0,id; for(int i=0; i<len; i++) { if(MaxId>i) p[i]=min(p[2*id-i],MaxId-i); else p[i]=1; while(st[i+p[i]]==st[i-p[i]]) p[i]++; if(p[i]+i>MaxId) { id=i; MaxId=p[i]+i; } }}int main(){ int T; scanf("%d",&T); for(int t=1; t<=T; t++) { scanf("%d",&n); for(int i = 0; i <= 2*n+1; i++) p[i] =0; len = 0; st[len++]= -2; st[len++]= -1; for(int i=1; i<=n; ++i) { scanf("%d",&st[len++]); st[len++] = -1; } st[len] = 0; manacher(); int maxans=1; for(int i = 3; i < len; i+=2) for(int j = maxans; j <= p[i]; j+=2) { if(p[j+i-1] >= j) maxans = j; } printf("Case #%d: %d\n",t,(maxans)/2*3); } return 0;}</span>
0 0
- 2015 多校联赛 ——HDU5371(manacher + 枚举)
- hdu5371 Hotaru's problem(manacher 算法+枚举)
- 【HDU5371】Hotaru's problem(Manacher + set)
- hdu5371(2015多校7)--Hotaru's problem(Manacher+线段树)
- hdu5371 Hotaru's problem(Manacher算法变形)
- hdu5371 最长回文子串变形(Manacher算法)
- Hotaru's problem(hdu5371+Manacher)多校7
- 字符串:HDU5371-Hotaru's problem(manacher 的应用)
- hdu5371 Hotaru's problem (Manacher)
- [Manacher] hdu5371 Hotaru's problem
- 2015 多校联赛 ——HDU5289(二分+ST)
- 2015多校联赛 ——HDU5288(数学)
- 2015 多校联赛 ——HDU5299(树删边)
- 2015 多校联赛 ——HDU5305(搜索)
- 2015 多校联赛 ——HDU5303(贪心)
- 2015 多校联赛 ——HDU5301(技巧)
- 2015 多校联赛 ——HDU5319(模拟)
- 2015 多校联赛 ——HDU5323(搜索)
- 关于附带数据库操作时Activity界面总是自动启动
- Java web项目中jsp使用java类的方法
- tomcat connector运行模式,优化tomcat运行性能
- 【深入Lua】理解Lua中最强大的特性-coroutine(协程)
- 苹果审核reject理由大全(5):IAP商品在iphone、ipad版本互通
- 2015 多校联赛 ——HDU5371(manacher + 枚举)
- 有关ip地址转int型存储需要注意的地方
- 记录每天的收获与总结
- 软件架构设计应该考虑的问题(优秀)
- leetCode #58 Length of Last Word
- linux(debian/ubuntu)下连接安卓手机--小米4为例
- 数据结构基本概念
- iOS开发~Xcode插件使用简析
- 手机信号强度