Educational Codeforces Round 25 F. String Compression(kmp+dp)
来源:互联网 发布:淘宝店铺类目怎么选 编辑:程序博客网 时间:2024/06/06 05:18
题解:这个题无非就是想找到字符串每一段的循环节。经典KMP便可以找到字符串的循环节。问题解决
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int INF=0x3f3f3f3f;char s1[8010],s2[8010];int len;int Next[8010];void get_next(int len2){ Next[0]=-1; int i=0,j=-1; while(i<len2) { if(j==-1||s2[i]==s2[j]) { i++,j++; Next[i]=j; } else j=Next[j]; }}int p(int x){ int ans=0; while(x) { ans++; x/=10; } return ans;}int dp[8010];int main(){ scanf("%s",s1);int len=strlen(s1); for(int i=1;i<=len;i++)dp[i]=i+1; for(int i=0;i<len;i++) { strcpy(s2,s1+i); get_next(len-i); for(int j=1;j+i<=len;j++) { int l=j-Next[j]; if(j%l==0) dp[i+j]=min(dp[i+j],dp[i]+l+p(j/l)); else dp[i+j]=min(dp[i+j],dp[i]+1+j); } } printf("%d\n",dp[len]); return 0;}
阅读全文
1 0
- Educational Codeforces Round 25 F. String Compression(kmp+dp)
- cf Educational Codeforces Round 25 F. String Compression
- CodeForces 825F Educational Round #25 F:KMP最小循环节+DP
- CodeForces 825F String Compression---这个KMP很DP
- Codeforces 825F String Compression DP(最小循环节)
- Educational Codeforces Round 19 F(dp+队列优化)
- Educational Codeforces Round 16 -- E. Generate a String (DP)
- Educational Codeforces Round 16 E. Generate a String-DP
- Educational Codeforces Round 16 E. Generate a String (dp)
- Educational Codeforces Round 5 [补F]
- Educational Codeforces Round 23 A-F
- Educational Codeforces Round 32 F. Connecting Vertices
- Educational Codeforces Round 31 F. Anti-Palindromize
- Educational Codeforces Round 25
- Educational Codeforces Round 25
- Educational Codeforces Round 25
- Educational Codeforces Round 25
- Educational Codeforces Round 25
- 使用jquery动态修改a链接的href属性值
- PAT 1017A除以B
- XML技术学习
- Java排序算法之冒泡排序
- Spring MVC中文乱码解决
- Educational Codeforces Round 25 F. String Compression(kmp+dp)
- 性能测试相关术语
- 支持跨平台内容的虚拟现实VR技术头盔问世
- SpringMVC下的静态资源访问问题
- html引入字体的方法归纳
- RabbitMQ分布式集群架构和高可用性
- 培养属立足于未来的产品经理人3- 究竟什么是UX
- 使用代码找出应用的包名和startActivity
- request和response对象