比赛 20101116 评测结果 AAAAAWWWWA
题目名称 打砖块 最终得分 60
用户昵称 .Xmz 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-16 11:05:29
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <cmath>
  5. #include <cstdio>
  6.  
  7. using namespace std;
  8.  
  9. int s[201][201],n,m,k;
  10. int d[201][201];
  11. char st[11];
  12. int f[201][201];
  13. bool y[201][201];
  14. int dfs(int u,int l)
  15. {
  16. if (u>m || l<=0) return 0;
  17. if (y[u][l]) return f[u][l];
  18. y[u][l]=true;
  19. int t=min(n,k);
  20. for (int i=0;i<=t;i++)
  21. {
  22. if (l-i+d[n][u]-d[n-i][u]<0) break;
  23. f[u][l]=max(f[u][l],s[n][u]-s[n-i][u]+dfs(u+1,l-i+d[n][u]-d[n-i][u]));
  24. }
  25. return f[u][l];
  26. }
  27.  
  28. int main()
  29. {
  30. freopen("gamea.in","r",stdin);
  31. freopen("gamea.out","w",stdout);
  32. scanf("%d%d%d",&n,&m,&k);
  33. for (int i=1;i<=n;i++)
  34. for (int j=1;j<=m;j++)
  35. {
  36. scanf("%d%s",&s[i][j],&st);
  37. if (st[0]=='Y') d[i][j]=d[i-1][j]+1;
  38. else d[i][j]=d[i-1][j];
  39. s[i][j]+=s[i-1][j];
  40. }
  41. printf("%d\n",dfs(1,k));
  42. }