记录编号 578537 评测结果 AAAAAAAAAAAAAAA
题目名称 [USACO23 Jan Silver] Following Directions 最终得分 100
用户昵称 Gravatarムラサメ 是否通过 通过
代码语言 C++ 运行时间 0.752 s
提交时间 2023-03-28 14:26:55 内存使用 12.42 MiB
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,q,value;
  4. int f[1510][1510],r[1510],d[1510],a[1510][1510];
  5. void prework(){
  6. for(int i=1;i<=n;i++){
  7. for(int j=1;j<=n;j++){
  8. a[i][j]++;
  9. if(f[i][j]==1){
  10. a[i][j+1]+=a[i][j];
  11. }
  12. else{
  13. a[i+1][j]+=a[i][j];
  14. }
  15. }
  16. }
  17. }
  18. void calc(){
  19. int ans=0;
  20. for(int i=1;i<=n;i++){
  21. ans+=a[i][n+1]*r[i]+a[n+1][i]*d[i];
  22. }
  23. cout<<ans<<endl;
  24. }
  25. void work(bool flag,int x,int y){
  26. if(flag==true){
  27. a[x][y]-=value;
  28. }
  29. if(x==n&&f[x][y]==0){
  30. a[x+1][y]-=value;
  31. }
  32. else{
  33. if(y==n&&f[x][y]==1){
  34. a[x][y+1]-=value;
  35. }
  36. else{
  37. if(f[x][y]==0){
  38. work(true,x+1,y);
  39. }
  40. else{
  41. work(true,x,y+1);
  42. }
  43. }
  44. }
  45. }
  46. int main(){
  47. freopen("zunxun.in","r",stdin);
  48. freopen("zunxun.out","w",stdout);
  49. ios::sync_with_stdio(0);
  50. cin.tie(0);
  51. cout.tie(0);
  52. cin>>n;
  53. char c;
  54. for(int i=1;i<=n;i++){
  55. for(int j=1;j<=n;j++){
  56. cin>>c;
  57. if(c=='R'){
  58. f[i][j]=1;
  59. }
  60. else{
  61. f[i][j]=0;
  62. }
  63. }
  64. cin>>r[i];
  65. }
  66. for(int i=1;i<=n;i++){
  67. cin>>d[i];
  68. }
  69. prework();
  70. calc();
  71. cin>>q;
  72. int x,y;
  73. for(int i=1;i<=q;i++){
  74. cin>>x>>y;
  75. value=a[x][y];
  76. work(false,x,y);
  77. f[x][y]=!f[x][y];
  78. value=-a[x][y];
  79. work(false,x,y);
  80. calc();
  81. }
  82. return 0;
  83. }