记录编号 138554 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 神奇的压缩机 最终得分 100
用户昵称 Gravatarmikumikumi 是否通过 通过
代码语言 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;
}