[SCOI2007]压缩 区间dp
来源:互联网 发布:数据标准化方法比较 编辑:程序博客网 时间:2024/06/05 05:24
明显是个区间dp,但是我区间dp就是个渣。。。 f[i][j]表示区间i到j最短的字符长度;假设前面加了个M,所以初始化f[i][i]=2;当然最开始是不算M的,所以f[1][1]=1;然后就可以区间dp了。 f[i][j]=min{f[i][j-1]+1};//从上一个加一更新过来(如果不存在重合的话)
if(a[i]==a[j]&&check(i,j))//判断是否有重合部分
f[i][j+j-i-1]=min(f[i][j+j-i-1],f[i][j-1]+1);//重合部分用R代替,所以要+1.注意好下标,最后再用一个dp合并就可以了。
if(a[i]==a[j]&&check(i,j))//判断是否有重合部分
f[i][j+j-i-1]=min(f[i][j+j-i-1],f[i][j-1]+1);//重合部分用R代替,所以要+1.注意好下标,最后再用一个dp合并就可以了。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;#define pos(i,a,b) for(int i=(a);i<=(b);i++)char a[100],b[100];int n;int f[100][100];int check(int i,int j){ pos(k,1,j-i-1) { if(a[i+k]!=a[j+k]) return 0; } return 1;}int main(){ memset(f,50,sizeof(f)); scanf("%s",&b); n=strlen(b); pos(i,1,n) a[i]=b[i-1]; //cout<<n; pos(i,1,n) f[i][i]=2; f[1][1]=1; pos(i,1,n) pos(j,i+1,n) { f[i][j]=min(f[i][j-1]+1,f[i][j]); if(a[i]==a[j]&&check(i,j)) f[i][j+j-i-1]=min(f[i][j+j-i-1],f[i][j-1]+1); } pos(i,1,n) pos(j,i+1,n) pos(k,i,j-1) f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); cout<<f[1][n]; //while(1); return 0;}
阅读全文
1 0
- [SCOI2007]压缩 区间dp
- 【BZOJ1068】[SCOI2007]压缩【区间DP】
- 【bzoj1068】[SCOI2007]压缩 区间dp
- [bzoj1068][SCOI2007]压缩 区间dp
- BZOJ 1068 [SCOI2007]压缩 区间DP
- BZOJ 1068: [SCOI2007]压缩 区间DP
- 【bzoj 1068】[SCOI2007]压缩 区间dp
- [BZOJ1068][SCOI2007]压缩(区间DP)
- bzoj1068 [SCOI2007]压缩(区间DP)
- BZOJ 1068: [SCOI2007]压缩 划分DP,记忆化搜索
- [bzoj][SCOI2007]压缩
- 【BZOJ 1068】 [SCOI2007]压缩
- BZOJ 1068 [SCOI2007]压缩
- bzoj1068: [SCOI2007]压缩
- bzoj1068[SCOI2007]压缩
- 【bzoj1068】[SCOI2007]压缩
- 1068: [SCOI2007]压缩
- 【bzoj1068】[SCOI2007]压缩
- tensorlayer 存在的隐藏问题
- d3画柱状图
- 安卓开发广播最简单强制下线
- Python3 BeautifulSoup爬虫 ZOJ自动提交
- BaseAdapter 的使用实例
- [SCOI2007]压缩 区间dp
- mysql的5中查询子句之四order by排序查询
- 设计模式(对象创建)——原型模式
- 多类型查询
- 决策树(补充)
- 统一接口开发架构,统一接口架构实现封装
- Eclipse.exe目录下有jre,为什么启动会报错?
- 细数linux内核里那些偏门的C语言语法(三) !!(x)
- StringUtils