codeforces 835D 区间dp
2017-08-02 17:07
441 查看
简单的区间dp
dp[i][j]表示区间i-j的回文度数
转移方程就是在si=sj且dp[i+1][j−1]>0时dp[i][j]=dp[i+1][(i+j)/2]+1
dp[i][j]表示区间i-j的回文度数
转移方程就是在si=sj且dp[i+1][j−1]>0时dp[i][j]=dp[i+1][(i+j)/2]+1
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<string> #include<set> #include<map> #include<queue> #include<stack> #include<cstring> #define clr(x) memset(x,0,sizeof(x)) using namespace std; #define LL long long int dp[5005][5005]; int main() { char str[5005]; while(scanf("%s",str)!=EOF) { clr(dp); int len = strlen(str); int ans[5005] = {0}; for(int i = 0;i<len;i++) dp[i][i] = 1,ans[1]++; for(int i = 1;i<len;i++) { for(int j = 0;j<len-i;j++) { if(i&1) // 偶数个 { if(i==1) { if(str[j]==str[j+i]) { dp[j][j+i] = 2; ans[2]++; } } else { int l = j+1; int r = j+i-1; if(str[j] == str[j+i] && dp[l][r]>0) { dp[j][j+i] = dp[j][j+i/2]+1; ans[dp[j][j+i]]++; } } } else // 奇数个 { int l = j+1; int r = j+i-1; if(str[j]==str[j+i] && dp[l][r]>0) { dp[j][j+i] = dp[j][j+i/2-1]+1; ans[dp[j][j+i]]++; } } //cout << j << " " << j+i << " num " << dp[j][j+i] << endl; } } //cout << dp[2][4] << endl; for(int i = len-1;i>=0;i--) { ans[i] = ans[i]+ans[i+1]; } for(int i = 1;i<=len;i++) { if(i!=1)printf(" "); printf("%d",ans[i]); } printf("\n"); } return 0; }
相关文章推荐
- codeforces 245H 区间DP 好题
- CodeForces 149 D.Coloring Brackets(区间DP)
- codeforces 509F Progress Monitoring (区间dp)
- CodeForces 607 B. Zuma(区间DP)
- Codeforces_758_D_(区间dp)
- Codeforces 940E - Cashback(dp+区间最小值)
- CodeForces-607B:Zuma (基础区间DP)
- CodeForces 512B(区间dp)
- codeforces 245H 区间DP 好题
- CodeForces 149D Coloring Brackets(区间DP)
- Codeforces 437E The Child and Polygon(区间DP)
- Codeforces 607B Zuma(区间DP)
- codeforces 607 B Zuma(区间dp)
- CodeForces - 149D Coloring Brackets 详细题解(递归区间DP+dfs染色,好题)
- CodeForces 149D 区间DP Coloring Brackets
- [几何 区间DP] Codeforces 438C & 437E. The Child and Polygon
- Codeforces 835D - Palindromic characteristics 【区间DP+回文串】
- Codeforces 327A Flipping Game(区间DP,暴力枚举)
- CodeForces 245H (区间dp)
- Codeforces 509F Progress Monitoring (区间dp 或 记忆化搜索)