比赛 |
国庆欢乐赛3 |
评测结果 |
C |
题目名称 |
Following Directions |
最终得分 |
0 |
用户昵称 |
29 |
运行时间 |
0.000 s |
代码语言 |
Pascal |
内存使用 |
0.00 MiB |
提交时间 |
2025-10-05 11:31:51 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct ys{
int c=0,zi=0,zj=0;
vector<int> fi,fj;
}mp[1503][1503];
int n,q,a,b;
char cr;
long long ans=0;
int zl(int i,int j,int cl){
ans+=cl-mp[i][j].c;
mp[i][j].c=cl;
for(int l=0;l<=mp[i][j].fi.size();l++){
if(mp[i][j].fi[l]+mp[i][j].fj[l]==0) return 0;
zl(i+mp[i][j].fi[l],j+mp[i][j].fj[l],cl);
}
return 0;
}
//int zl1(int i,int j,int cl){
//
// mp[i][j].c=cl;
// if(mp[i][j].fi+mp[i][j].fj==0) return 0;
// zl1(i+mp[i][j].fi,j+mp[i][j].fj,cl);
// if(mp[i][j].nfi+mp[i][j].nfj==0) return 0;
// zl1(i+mp[i][j].nfi,j+mp[i][j].nfj,cl);
// return 0;
//}
int main(){
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++){
cin>>cr;
if(cr=='R'){
mp[i][j].zi=0;
mp[i][j].zj=1;
mp[i][j+1].fi.push_back(0);
mp[i][j+1].fj.push_back(-1);
}
if(cr=='D'){
mp[i][j].zi=1;
mp[i][j].zj=0;
mp[i+1][j].fi.push_back(-1);
mp[i+1][j].fj.push_back(0);
}
}
cin>>mp[i][n+1].c;
}
for(int i=1;i<=n;i++){
cin>>mp[n+1][i].c;
}
cin>>q;
for(int i=1;i<=n;i++){
zl(n+1,i,mp[n+1][i].c);
}
for(int i=1;i<=n;i++){
zl(i,n+1,mp[i][n+1].c);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans+=mp[i][j].c;
cout<<ans<<endl;
for(int i=1;i<=q;i++){
cin>>a>>b;
if(mp[a][b].zi==0&&mp[a][b].zj==1) {//向右 ->向下
mp[a][b].zi=1;
mp[a][b].zj=0;
for(int j=0;j<mp[a][b+1].fi.size();j++){
if(mp[a][b+1].fi[j]==0&&mp[a][b+1].fj[j]==-1){
mp[a][b+1].fi[j]=0;
mp[a][b+1].fj[j]=0;
}
}
if(mp[a+1][b].fi.size()<2){
mp[a+1][b].fi.push_back(-1);
mp[a+1][b].fj.push_back(0);
}
else{
if(mp[a+1][b].fi[0]==0&&mp[a+1][b].fj[0]==0) {
mp[a+1][b].fi[0]=-1;
mp[a+1][b].fj[0]=0;
}
else{
mp[a+1][b].fi[1]=-1;
mp[a+1][b].fj[1]=0;
}
}
zl(a,b,mp[a+1][b].c);
}
if(mp[a][b].zi==0&&mp[a][b].zj==1) {//向xia ->向you
mp[a][b].zi=0;
mp[a][b].zj=1;
for(int j=0;j<mp[a+1][b].fi.size();j++){
if(mp[a+1][b].fi[j]==-1&&mp[a][b+1].fj[j]==0){
mp[a+1][b].fi[j]=0;
mp[a+1][b].fj[j]=0;
}
}
if(mp[a][b+1].fi.size()<2){
mp[a][b+1].fi.push_back(0);
mp[a][b+1].fj.push_back(-1);
}
else{
if(mp[a][b+1].fi[0]==0&&mp[a][b+1].fj[0]==0) {
mp[a][b+1].fi[0]=0;
mp[a][b+1].fj[0]=-1;
}
else{
mp[a][b+1].fi[1]=0;
mp[a][b+1].fj[1]=-1;
}
}
zl(a,b,mp[a][b+1].c);
}
cout<<ans<<endl;
}
return 0;
}
//
// for(int i=1;i<=n+1;i++){
// for(int j=1;j<=n+1;j++) cout<<mp[i][j].fi <<","<<mp[i][j].fj<<" ";
// cout<<endl;
// }
// for(int i=1;i<=n+1;i++){
// for(int j=1;j<=n+1;j++) cout<<mp[i][j].c<<" ";
// cout<<endl;
//
// for(int i=1;i<=n+1;i++){
// for(int j=1;j<=n+1;j++) cout<<mp[i][j].c<<" ";
// cout<<endl;
// }