比赛 防止颓废的小练习v0.2 评测结果 AAAAAAAAAA
题目名称 乌龟棋 最终得分 100
用户昵称 404 运行时间 0.078 s
代码语言 C++ 内存使用 12.18 MiB
提交时间 2016-10-18 10:53:07
显示代码纯文本
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<cstdio>
  6. #include<queue>
  7. #include<map>
  8. #include<vector>
  9. #include<set>
  10. #define inf 0x7fffffff
  11. #define ll long long
  12. #define ull unsigned long long
  13. #define fi first
  14. #define se second
  15. using namespace std;
  16. int n,m;
  17. int a[500],b[125],c[5],f[42][42][42][42];
  18. int main()
  19. {
  20. freopen("tortoise.in","r",stdin);
  21. freopen("tortoise.out","w",stdout);
  22. scanf("%d%d",&n,&m);
  23. for(int i=1;i<=n;i++)scanf("%d",&a[i]);
  24. for(int i=1;i<=m;i++)scanf("%d",&b[i]),c[b[i]]++;
  25. for(int i=0;i<=c[1];i++)
  26. {
  27. for(int j=0;j<=c[2];j++)
  28. {
  29. for(int k=0;k<=c[3];k++)
  30. {
  31. for(int p=0;p<=c[4];p++)
  32. {
  33. if(i!=0)f[i][j][k][p]=max(f[i][j][k][p],f[i-1][j][k][p]);
  34. if(j!=0)f[i][j][k][p]=max(f[i][j][k][p],f[i][j-1][k][p]);
  35. if(k!=0)f[i][j][k][p]=max(f[i][j][k][p],f[i][j][k-1][p]);
  36. if(p!=0)f[i][j][k][p]=max(f[i][j][k][p],f[i][j][k][p-1]);
  37. f[i][j][k][p]+=a[i*1+j*2+k*3+p*4+1];
  38. }
  39. }
  40. }
  41. }printf("%d\n",f[c[1]][c[2]][c[3]][c[4]]);
  42. }