记录编号 266531 评测结果 AAAAA
题目名称 [冲刺NOIP2014]编码 最终得分 100
用户昵称 Gravatardateri 是否通过 通过
代码语言 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(){;}