159D回文串预处理
来源:互联网 发布:赵薇万惠事件知乎 编辑:程序博客网 时间:2024/05/19 14:34
/*求回文串组成的对数的总数 分析:现对数据进行预处理,求出第 i 个字符前面出现过多少个回文串然后 dp 的方法 :dp[i] = dp[i-1] + Sum{ g[j][i]==1?sum[j-1]:0 } g[j][i] == 1 , 则 string[j,i] 是回文串 */#include<iostream>#include<cstdio> #include<cstring>#include<algorithm>using namespace std;#define manx 2009char s[manx];long long dp[manx],g[manx][manx],sum[manx];int main(){ while(cin>>s+1){ int len = strlen(s+1); memset(g,0,sizeof(g)); dp[0] = sum[0] = 0; for(int i=1;i<=len;i++){ dp[i] = 0, sum[i] = 1; } for(int i=2;i<=len;i++){ if(s[i]==s[i-1]) { sum[i] ++; g[i-1][i]=1; } } for(int i=1;i<=len;i++){ g[i][i] = 1; //是回文串符串 for(int j=i-2;j>=1;j--){ if(s[j]==s[i] && g[j+1][i-1]) { g[j][i] = 1; sum[i] ++; } } if(i>=2) sum[i] += sum[i-1]; } for(int i=1;i<=len;i++){ for(int j=i;j>=1;j--){ if(g[j][i]) dp[i] += sum[j-1]; } if(i>=2) dp[i] += dp[i-1]; } cout<<dp[len]<<endl; }}
- 159D回文串预处理
- CodeForces 159D Palindrome pairs (回文子串、dp)
- 【回文串】835D Palindromic characteristics
- GCC -D预处理
- 预处理调试标志 -D
- UVA 11584 Partitioning by Palindromes 划分成回文串(DP + 预处理)
- 最长回文子串 HDU3068 POJ3974 CF.7D
- Codeforces 835D Round #427 Div2D :回文串DP
- [预处理优化][动态规划]D
- Codeforces 835D Round #427 D-Palindromic characteristics—— DP+回文串
- 回文数&&回文串
- Codeforces 155D(分解质因子+预处理)
- 51nod 1464 半回文(字典树+DFS+预处理)
- Codeforces Round #389 (Div. 2) D. Santa Claus and a Palindrome 回文串+贪心+数据结构、字符串
- 【Codeforces】Codeforces Round #427 (Div. 2) D. Palindromic characteristics DP回文串
- Codeforces Round #427 (Div. 2)D. Palindromic characteristics(DP+回文串)
- Codeforces Round #427 (Div. 2) D-Palindromic characteristics (回文串,暴力)
- 回文串
- 项目重构方案设计
- .NET 技术社区谈之中文篇
- Base64编码
- .NET 技术社区谈之英文篇
- 31天重构学习笔记1. 封装集合
- 159D回文串预处理
- 31天重构学习笔记2. 移动方法
- 31天重构学习笔记3. 提升方法
- 31天重构学习笔记4. 降低方法
- Bloom filter
- 31天重构学习笔记5. 提升字段
- 31天重构学习笔记6. 降低字段
- 31天重构学习笔记7. 重命名(方法,类,参数)
- 31天重构学习笔记8. 使用委派代替继承