记录编号 | 138554 | 评测结果 | AAAAAAAAAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 神奇的压缩机 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.204 s | ||
提交时间 | 2014-11-06 00:18:35 | 内存使用 | 0.35 MiB | ||
#include<fstream> #include<string> using namespace std; ifstream input("WinCHG.in"); ofstream output("WinCHG.out"); string a; int L,pan=0,b,c,len[5000]={0},dp[5000]={0},n,m; int set() { for(int i=0;i<L;i++) { for(int j=0;j<i;j++) { int k=j,tot=0; while(i+tot<L&&a[k]==a[i+tot]) { k++; tot++; if(k>=i) k=j; }len[i]=max(len[i],tot); } } return 0; } int work() { for(int i=0;i<L;i++) { if(i==0) dp[i]=n; else dp[i]=dp[i-1]+n; for(int k=0;k<i;k++) { if(len[k]<i-k+1)continue; else { if(k!=0) dp[i]=min(dp[i],dp[k-1]+m); else dp[i]=min(dp[i],m); } } } return 0; } int main() { input>>a; input>>n>>m; L=a.length(); set(); work(); output<<dp[L-1]; input.close(); output.close(); return 0; }