[UOJ P219][NOI2016]优秀的拆分[95]
来源:互联网 发布:华为追风软件 编辑:程序博客网 时间:2024/06/06 03:13
原题链接
预处理
处理满足AA形式的字串
记录在i这个位置
以它为开头的AA形式和以它为结尾的AA形式的字串的个数
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#include<queue>#include<vector>#include<climits>#include<string>#include<cstdlib>#include<ctime>#define ULL unsigned long long#define LL long long#define MOD1 1000000007#define MOD2 23333333333#define base 131using namespace std;char s[2005];int T,f1[2005][2005],f2[2005][2005],len,mid,ans,f[2005],g[2005];void pre(){ int i,j; memset(f1,0,sizeof(f1)); memset(f2,0,sizeof(f2)); for(i=1;i<=len;i++) for(j=i;j<=len;j++) { f1[i][j]=(f1[i][j-1]*base+s[j]-'a'+1)%MOD1; f2[i][j]=(f2[i][j-1]*base+s[j]-'a'+1)%MOD2; } }int main(){ int i,j; scanf("%d",&T); while(T--) { scanf("%s",s); len=strlen(s); for(i=len;i>=1;i--) s[i]=s[i-1]; s[0]=0; ans=0; memset(f,0,sizeof(f)); memset(g,0,sizeof(g)); pre(); for(i=1;i<=len;i++) for(j=i+1;j<=len;j++) if((j-i+1)%2==0) { mid=(i+j)>>1; if((f1[mid+1][j]==f1[i][mid])&&(f2[mid+1][j]==f2[i][mid])) { f[i]++; g[j]++; } } for(i=1;i<=len;i++) if(f[i+1]&&g[i]) ans+=f[i+1]*g[i]; printf("%d\n",ans); } return 0;}219
阅读全文
0 0
- [UOJ P219][NOI2016]优秀的拆分[95]
- UOJ #219 [NOI2016 D1T1] 优秀的拆分 [95分]
- 【NOI2016】优秀的拆分
- 【NOI2016】优秀的拆分(95分)
- bzoj4650: [Noi2016]优秀的拆分
- 4650: [Noi2016]优秀的拆分
- 【后缀数组】[NOI2016]优秀的拆分
- bzoj 4650: [Noi2016]优秀的拆分
- BZOJ 4650([Noi2016]优秀的拆分-SA)
- NOI2016 优秀的拆分 后缀数组
- NOI2016 优秀的拆分 后缀数组
- NOI2016优秀的拆分 后缀数组
- [BZOJ4650][NOI2016]优秀的拆分-后缀数组
- [后缀数组] BZOJ4650: [Noi2016] 优秀的拆分
- Noi2016 D1 T1 优秀的拆分 90做法
- BZOJ 4650: [Noi2016]优秀的拆分 哈希+分块
- [BZOJ4650][NOI2016]优秀的拆分 各数据点解法
- [后缀数组 枚举 字符串分段] BZOJ 4650 [Noi2016]优秀的拆分
- Android的Input流程分析(好文)
- POJ
- python爬虫----scrapy爬虫之天气预报
- 综合文档下载
- 如何学习linux内核
- [UOJ P219][NOI2016]优秀的拆分[95]
- 动态规划 最长公共子序列LCS
- 无人零售时代来袭,催生零售行业数据分析新工种!
- Mac下载Homebrew
- php
- struts2入门--工作流程
- POJ 3080 Blue Jeans (分解字符串,KMP)
- [(ngModel)]的实现原理
- Jzzhu and Sequences