hdu4632(区间dp+容斥)
来源:互联网 发布:熊猫tv怎么刷猫币淘宝 编辑:程序博客网 时间:2024/05/17 07:21
链接:点击打开链接
题意:给出一个串,求其中回文子序列的个数
代码:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;char s[1005];long long dp[1005][1005];const long long MOD=10007;int main(){ long long t,i,j,l,k,cas,len; scanf("%I64d",&t); for(cas=1;cas<=t;cas++){ scanf("%s",s+1); len=strlen(s+1); memset(dp,0,sizeof(dp)); for(i=1;i<=len;i++) dp[i][i]=1; for(i=1;i<=len-1;i++){ if(s[i]==s[i+1]) dp[i][i+1]=3; else dp[i][i+1]=2; } //dp[i][j]表示i到j区间内的种数 for(l=3;l<=len;l++){ for(i=1;i<=len-l+1;i++){ j=i+l-1; if(s[i]==s[j]) //端点值相等则可以加上中间的种数 dp[i][j]=(dp[i][j]+dp[i+1][j-1]+1)%MOD; dp[i][j]=(dp[i][j]+dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]+MOD)%MOD; } //根据容斥原理减去中间重合的部分 } printf("Case %I64d: %I64d\n",cas,dp[1][len]); } return 0;}
0 0
- hdu4632(区间dp+容斥)
- hdu4632 区间dp
- HDU4632:Palindrome subsequence(区间DP)
- hdu4632 Palindrome subsequence--区间dp
- HDU4632 Palindrome subsequence(区间DP)
- hdu4632(DP)
- hdu4632(区间dp求字符串的回文子串数)
- 区间dp入门[POJ2955][HDU2476][POJ3186][POJ1651][HDU4632][HDU4283][HDU4570][POJ3280]
- HDU 4632 Palindrome subsequence (区间dp 容斥定理)
- hdu 4632 Palindrome subsequence (区间DP+容斥)
- Palindrome subsequence(hdu4632,DP)
- hdu4632
- 数字 【DP+容斥】
- bzoj1042 dp+容斥
- BZOJ 2287 DP+容斥
- BZOJ 1042 dp+容斥
- bzoj2669 [ CQOI2012 ] -- DP+容斥
- BZOJ 3622 DP+容斥
- 2016长乐夏令营 Day12
- 垂直居中问题
- POJ2007 Scrambled Polygon 凸多边形顶点输出
- AB 模拟测试秒杀
- 进制转换,计算 还有各种数据类型和字符
- hdu4632(区间dp+容斥)
- mashenday03
- 实习小记一:RESTful架构理解入门
- 关于 inverse_of 的困惑与探究
- Minimum Path Sum
- QGroupBox QToolBox QComboBox
- Java学习之对象与对象引用的区别
- LintCode之比较字符串
- 数据库一系列查询函数