记录编号 266507 评测结果 AAAAA
题目名称 [冲刺NOIP2014]编码 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-06-07 20:14:05 内存使用 0.00 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. #include<string.h>
  3. struct compare{
  4. char com[300];
  5. int length1,length2;
  6. }a[200];
  7. char b[300],_b[300];
  8. int f[3000]={0},len=1;
  9. bool flag=false,_flag=false;
  10. void scanff()
  11. {
  12. while(scanf("%s",a[len].com)!=EOF)
  13. {
  14. if(a[len].com[0]<='z'&&a[len].com[0]>='a')
  15. {flag=true;strcpy(_b,a[len].com);return;}
  16. for(int j=0;j<strlen(a[len].com);j++)
  17. if(a[len].com[j]=='0'||a[len].com[j]=='1') a[len].length1++;
  18. else if(a[len].com[j]>='a'&&a[len].com[j]<='z') a[len].length2++;
  19. len++;
  20. }
  21. }
  22. bool find(int i,int j)
  23. {
  24. for(int k=1;k<=a[j].length2;k++)
  25. if(a[j].com[k]!=b[i+k-1])
  26. return false;
  27. return true;
  28. }
  29. int _521()
  30. {
  31. freopen("compare.in","r",stdin);
  32. freopen("compare.out","w",stdout);
  33. int n;
  34. scanf("%d",&n);
  35. while(n--)
  36. {
  37. memset(a,0,sizeof(a));
  38. memset(b,0,sizeof(b));
  39. memset(f,127,sizeof(f));
  40. if(!flag)scanf("%s",b);
  41. else strcpy(b,_b),flag=false;
  42. scanff();f[0]=0;_flag=false;
  43. int m=strlen(b);
  44. for(int i=1;i<=m;i++)
  45. {
  46. for(int j=1;j<len;j++)
  47. if(find(i-1,j))
  48. if(f[i+a[j].length2-1]>f[i-1]+a[j].length1)
  49. i+a[j].length2-1==m?_flag=true:true,
  50. f[i+a[j].length2-1]=f[i-1]+a[j].length1;
  51. }
  52. printf("%d\n",_flag?f[m]:0);
  53. }
  54. return 0;
  55. }
  56. int _520=_521();
  57. int main(){;}