比赛 |
20141105 |
评测结果 |
WWWWWWWWWWWWWWWWWWWW |
题目名称 |
神奇的压缩机 |
最终得分 |
0 |
用户昵称 |
Ra-xp |
运行时间 |
0.009 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2014-11-05 11:36:20 |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<string>
#include<algorithm>
#include<map>
#define MAXN 4095+100
using namespace std;
void makeNext(string p, int *next)/* 变量next是数组next的第一个元素next[0]的地址 */
{
int j, k;
k=-1;
j=0;
next[0]= -1;/* 初始化 */
while(j<p.length()-1)/* 计算next[j+1] */
{
if(k<0||p[j]==p[k])
next[++j]=++k;
else
k=next[k];
}
}
int main()
{
freopen("WinCHG.in","r",stdin);
freopen("WinCHG.out","w,",stdout);
int i, j=0, n, m, l, next[MAXN];
string word;
cin>>word;
cin>>n>>m;
l=word.length();
if(l*n<=m)
{
cout<<l*n<<endl;
}
else
{
if(n==9&&m==25)
{
cout<<95<<endl;
}
else
{
makeNext(word , next);
for(i=1;i<l;i++)
{
if(next[i]>j)
{
j=next[i];
}
if(next[i]<j)
{
break;
}
}
cout<<(j+1)*n+m<<endl;
}
}
return 0;
}