记录编号 607101 评测结果 AAAAAAAAAAAAAAA
题目名称 3863.[USACO23 Jan Silver] Following Directions 最终得分 100
用户昵称 Gravatar梦那边的美好CE 是否通过 通过
代码语言 C++ 运行时间 1.493 s
提交时间 2025-10-05 16:25:31 内存使用 13.54 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,ans,q,x,y,i,j;
char c;
int sign[1514][1514],cow[1514][1514];

void cx(int x,int y){
    int i,j;
    if(x>n||y>n)return;
    cow[x][y]++;
    if(sign[x][y]==1)cow[x][y+1]=cow[x][y+1]+cow[x][y];
    else cow[x+1][y]=cow[x+1][y]+cow[x][y];
    return;
}
int solve(){
    ans=0;
    for(int i=1;i<=n;i++){
        ans=ans+sign[n+1][i]*cow[n+1][i];
        ans=ans+sign[i][n+1]*cow[i][n+1];
    }
    return ans;
}
void dfs(int x,int y,int z){
    if(x>n||y>n)return;
    if(sign[x][y]==1){
        cow[x][y+1]=cow[x][y+1]+z;
        dfs(x,y+1,z);
    }
    else{
        cow[x+1][y]=cow[x+1][y]+z;
        dfs(x+1,y,z);
    }
    return;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    freopen("zunxun.in","r",stdin);freopen("zunxun.out","w",stdout);
    cin>>n;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            cin>>c;
            if(c=='R')sign[i][j]=1;
            else sign[i][j]=2;
        }
        cin>>sign[i][n+1];
    }
    for(i=1;i<=n;i++){
        cin>>sign[n+1][i];
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            cx(i,j);
        }
    } 
    cout<<solve()<<endl;
    cin>>q;
    while(q--){
        cin>>x>>y;
        if(sign[x][y]==1){
            cow[x][y+1]=cow[x][y+1]-cow[x][y];
            dfs(x,y+1,-1*cow[x][y]);
            sign[x][y]=2;
        }
        else{
            cow[x+1][y]=cow[x+1][y]-cow[x][y];
            dfs(x+1,y,-1*cow[x][y]);
            sign[x][y]=1;
        }
        dfs(x,y,cow[x][y]);
        cout<<solve()<<endl;
    }
}