比赛 国庆欢乐赛3 评测结果 AAAAAAAAAAAAAAA
题目名称 Following Directions 最终得分 100
用户昵称 陆晨洗 运行时间 1.987 s
代码语言 C++ 内存使用 13.47 MiB
提交时间 2025-10-05 10:23:31
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,ans;
int sign[1510][1510]={0};//路标位置与饲料价值 
int cow[1510][1510]={0};//经过该位置的奶牛数量 

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 js()//求花费成本 
{
    int i;
    ans=0;
    for(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 xg(int x,int y,int z)//更改奶牛数量 
{
    int i,j;
    if(x>n||y>n)
    {
        return;
    }
    if(sign[x][y]==1)
    {
        cow[x][y+1]=cow[x][y+1]+z;
        xg(x,y+1,z);
    }
    else
    {
        cow[x+1][y]=cow[x+1][y]+z;
        xg(x+1,y,z);
    }
    return;
}
int main()
{
    freopen("zunxun.in","r",stdin);
    freopen("zunxun.out","w",stdout);
    int q,x,y,i,j;
    char c;
    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];
    }//61-81行:基本输入 
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            cx(i,j);//初始化 
        }
    } 
    cout<<js()<<endl;//输出答案 
    cin>>q;
    for(i=1;i<=q;i++)
    {
        cin>>x>>y;
        if(sign[x][y]==1)
        {
            cow[x][y+1]=cow[x][y+1]-cow[x][y];
            xg(x,y+1,-1*cow[x][y]);
            sign[x][y]=2;
        }
        else
        {
            cow[x+1][y]=cow[x+1][y]-cow[x][y];
            xg(x+1,y,-1*cow[x][y]);
            sign[x][y]=1;
        }//94-105行:改变路标方向 
        xg(x,y,cow[x][y]);
        cout<<js()<<endl;//输出答案 
    }
}