比赛 国庆欢乐赛3 评测结果 WWWWWWWWWWWWWWW
题目名称 Following Directions 最终得分 0
用户昵称 会放牛的鸵鸟 运行时间 0.912 s
代码语言 C++ 内存使用 16.87 MiB
提交时间 2025-10-05 10:44:42
显示代码纯文本
#include<bits/stdc++.h>
 using namespace std;  
 
 int n, q; 
 string d[1510];
  int c_R[1510][1510],
   c_D[1510][1510]; 
   int f_c[1510][1510]; 
   int t_c; 
    void in() 
	{     for (int i = 1; i <= n; ++i) 
	{         cin >> d[i] >> c_R[i][n+1];    
	 }     
	 for (int j = 1; j <= n; ++j) { 
	         cin >> c_D[n+1][j];     } 
			 }  
			 
		void dp() {     
		for (int i = n; i >= 1; --i) {       
		  for (int j = n; j >= 1; --j) {     
		          if (d[i][j-1] == 'R') {        
				           c_R[i][j] = c_R[i][j+1] + c_R[i][n+1];   
						   
				              c_D[i][j] = c_D[i+1][j] + c_D[n+1][j];       
							        } else {        
									
								         c_R[i][j] = c_D[i+1][j] + c_R[i][n+1];          
										        c_D[i][j] = c_D[i+1][j+1] + c_D[n+1][j+1];      
												      }    
													      }  
														    } 
															}  
															
		void fl(int a, int b) {  
		
		   if (d[a][b-1] == 'R') {    
		        d[a][b-1] = 'D';     
				    c_R[a][b] ^= c_D[a+1][b] ^ c_R[a][b]; 
					        c_D[a][b] ^= c_D[a+1][b+1] ^ c_D[a][b];     }
							 else {         d[a][b-1] = 'R';   
							       c_R[a][b] ^= c_D[a+1][b] ^ c_R[a][b];     
								       c_D[a][b] ^= c_D[a+1][b+1] ^ c_D[a][b];  
									      } } 
										  
	 int main() {   
	freopen("zunxun.in","r",stdin);
freopen("zunxun.out","w",stdout);
	  cin >> n; 
	    in();   
	  dp();   
	 for (int i = 1; i <= n; ++i) {  
	   for (int j = 1; j <= n; ++j) {  
           if (d[i][j-1] == 'R') {                
		    t_c += c_R[i][j];        
			     } else {       
	          t_c += c_D[i][j];     
			          }       
					    }   
					  }  
			  cout << t_c << endl;  
			    cin >> q;   
			  for (int i = 0; i < q; ++i) {
			  
	         int a, b;       
			  cin >> a >> b;       
			  fl(a, b);        
			  t_c -= f_c[a][b];     
			    f_c[a][b] = (d[a][b-1] == 'R' ? c_R[a][i] : c_D[a][i]);  
		       t_c += f_c[a][b];    
			        cout << t_c << endl;   
					  }   
					    return 0; }