比赛 |
国庆欢乐赛3 |
评测结果 |
AWWWTTTTTTTTTTT |
题目名称 |
Following Directions |
最终得分 |
7 |
用户昵称 |
梦那边的没好TM |
运行时间 |
31.694 s |
代码语言 |
C++ |
内存使用 |
22.58 MiB |
提交时间 |
2025-10-05 10:24:33 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define foru(a,b,c) for(ll a=b;a<=c;a++)
ll n,cow[1505][1505],num[1505][1505],sum,q;
void fvck(ll x,ll y){
while(x!=n+1&&y!=n+1){
if(cow[x][y]){
num[x][y+1]=num[x][y]+1;
y++;
}else{
num[x+1][y]=num[x][y]+1;
x++;
}
}
}
int main(){
freopen("zunxun.in","r",stdin);
freopen("zunxun.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
char c;
foru(i,1,n+1){
foru(j,1,n+1){
if(i!=n+1&&j!=n+1){
cin>>c;//D->0 R->1
cow[i][j]=c/2%2;
}else if(i==n+1&&j==n+1){
continue;
}else{
cin>>cow[i][j];
}
}
}
// foru(i,1,n+1){
// foru(j,1,n+1){
// cerr<<cow[i][j]<<" ";
// }
// cerr<<endl;
// }
// cin>>q;
// foru(i,1,q){
// ll x,y;
// cin>>x>>y;
// p[i]={x,y};
// }
foru(i,1,n){
foru(j,1,n){
if(!num[i][j]){
num[i][j]=1;
fvck(i,j);
}
}
}
foru(i,1,n){
if(!num[n+1][i])num[n+1][i]++;
sum+=(num[n+1][i]-1)*cow[n+1][i];
}
foru(i,1,n){
if(!num[i][n+1])num[i][n+1]++;
sum+=(num[i][n+1]-1)*cow[i][n+1];
}
cout<<sum<<endl;
cin>>q;
foru(kkk,1,q){
foru(i,1,n+1){
foru(j,1,n+1){
num[i][j]=0;
}
}
ll x,y;
sum=0;
cin>>x>>y;
cow[x][y]=!cow[x][y];
foru(i,1,n){
foru(j,1,n){
if(!num[i][j]){
num[i][j]=1;
fvck(i,j);
}
}
}
foru(i,1,n){
if(!num[n+1][i])num[n+1][i]++;
sum+=(num[n+1][i]-1)*cow[n+1][i];
}
foru(i,1,n){
if(!num[i][n+1])num[i][n+1]++;
sum+=(num[i][n+1]-1)*cow[i][n+1];
}
cout<<sum<<endl;
}
return 0;
}