记录编号 607055 评测结果 AAAAAAAAAAAAAAA
题目名称 3863.[USACO23 Jan Silver] Following Directions 最终得分 100
用户昵称 Gravatar梦那边的美好RE 是否通过 通过
代码语言 C++ 运行时间 21.706 s
提交时间 2025-10-05 14:11:15 内存使用 18.01 MiB
显示代码纯文本
#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int N=1e6+7;
int c[2008][2008],n,q,siz[N],father[N],sum;
char mapp[2008][2008];
void dfs1(int x,int y,int val){
    if(x==0||y==0){
        return;
    }
    c[x][y]=val;
    sum+=val;
    if(mapp[x][y-1]=='R'){
        dfs1(x,y-1,val);
    }
    if(mapp[x-1][y]=='D'){
        dfs1(x-1,y,val);
    } 
    return;   
}
void dfs2(int x,int y,int val){
    if(x==0||y==0){
        return;
    }
    sum-=c[x][y];
    c[x][y]=val;
    sum+=c[x][y];    
    if(mapp[x][y-1]=='R'){
        dfs2(x,y-1,val);
    }
    if(mapp[x-1][y]=='D'){
        dfs2(x-1,y,val);
    }    
    return;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);		
    freopen("zunxun.in","r",stdin);
    freopen("zunxun.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            char ch;
            cin>>ch;
            mapp[i][j]=ch;
        }
        cin>>c[i][n+1];
    }
    for(int i=1;i<=n;i++){
        cin>>c[n+1][i];
    }
    for(int i=1;i<=n;i++){
        if(mapp[i][n]=='R'){
            dfs1(i,n,c[i][n+1]);
        }
        if(mapp[n][i]=='D'){
            dfs1(n,i,c[n+1][i]);
        }
    }
    cout<<sum<<"\n";
    cin>>q;
    while(q--){
        int a,b;
        cin>>a>>b;
        if(mapp[a][b]=='D'){
            mapp[a][b]='R';
            sum-=c[a][b];
            c[a][b]=c[a][b+1];
            sum+=c[a][b];
            dfs2(a,b,c[a][b]);
        }
        else{
            mapp[a][b]='D';
            sum-=c[a][b];
            c[a][b]=c[a+1][b];
            sum+=c[a][b];
            dfs2(a,b,c[a][b]);
        }
             
        cout<<sum<<"\n";
    }    
  
    
    
    return 0;
}