记录编号 |
266531 |
评测结果 |
AAAAA |
题目名称 |
[冲刺NOIP2014]编码 |
最终得分 |
100 |
用户昵称 |
dateri |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2016-06-07 22:00:16 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<stdio.h>
#include<string.h>
#define N 302
int min(int x,int y)
{
return x<y?x:y;
}
char a[N][N]={0},s[N]={0},c[N]={0};
int f[N]={0},b[N][N]={0},len;
void ok(int x)
{
int i=1,t,count,j,num=0,n=0;
memset(c,0,sizeof(c));
while(a[x][i]<'a'||a[x][i]>'z') i++;
for(;a[x][i]>='a'&&a[x][i]<='z';i++,n++)
c[i-1]=a[x][i];
while(a[x][i]!='0'&&a[x][i]!='1') i++;
for(;a[x][i]=='0'||a[x][i]=='1';i++)
num++;
for(i=1;i+n<=len+1;i++)
{
count=0;
while(c[1+count]==s[i+count]&&count<n)
count++;
if(count==n)
b[i][i+n-1]=num;
}
}
int ww()
{
freopen("compare.in","r",stdin);
freopen("compare.out","w",stdout);
int i,n,k,j;
scanf("%d",&n);
scanf("%s",s+1);
while(n--)
{
memset(a,0,sizeof(a));
memset(b,127/2,sizeof(b));
memset(f,127/2,sizeof(f));
f[0]=0;
k=0;
len=strlen(s+1);
while(scanf("%s",a[++k]+1)!=EOF&&a[k][1]=='(')
ok(k);
for(i=1;i<=len;i++)
for(j=1;j<=i;j++)
f[i]=min(f[j-1]+b[j][i],f[i]);
if(f[len]!=f[len+1])
printf("%d\n",f[len]);
else
printf("0");
strcpy(s+1,a[k]+1);
}
return 0;
}
int www=ww();
int main(){;}