refactor(P9014.cpp): 修复坐标计算逻辑并移除调试输出

修复坐标计算中的运算符优先级问题,将调试用的printf语句注释掉以保持代码整洁
This commit is contained in:
Zengtudor 2025-10-13 20:08:52 +08:00
parent 3db3b11d46
commit 8441937c61

View File

@ -27,20 +27,20 @@ int main(){
ll x=i,y=j; ll x=i,y=j;
while(x<=n && y<=n){ while(x<=n && y<=n){
cnt[x][y]++; cnt[x][y]++;
ll nx = x+c[x][y]=='D', ny = y+c[x][y]=='R'; ll nx = x+(c[x][y]=='D'), ny = y+(c[x][y]=='R');
x=nx,y=ny; x=nx,y=ny;
} }
printf("%lld, %lld add %lld\n",i,j,x>n?d[y]:r[x]); // printf("%lld, %lld add %lld\n",i,j,x>n?d[y]:r[x]);
ans+= x>n?d[y]:r[x]; ans+= x>n?d[y]:r[x];
} }
} }
for(ll i=1;i<=n;i++){ // for(ll i=1;i<=n;i++){
for(ll j=1;j<=n;j++){ // for(ll j=1;j<=n;j++){
printf("%lld ",cnt[i][j]); // printf("%lld ",cnt[i][j]);
} // }
printf("\n"); // printf("\n");
} // }
printf("\n"); // printf("\n");
std::cin>>q; std::cin>>q;
std::cout<<ans<<"\n"; std::cout<<ans<<"\n";
while(q--){ while(q--){
@ -51,29 +51,29 @@ int main(){
y+=c[i][j]=='R'; y+=c[i][j]=='R';
while(x<=n && y<=n){ while(x<=n && y<=n){
cnt[x][y]-=cnt[i][j]; cnt[x][y]-=cnt[i][j];
ll nx = x+c[x][y]=='D', ny = y+c[x][y]=='R'; ll nx = x+(c[x][y]=='D'), ny = y+(c[x][y]=='R');
x=nx,y=ny; x=nx,y=ny;
} }
ans-=cnt[i][j]*(x>n?d[y]:r[x]); ans-=cnt[i][j]*(x>n?d[y]:r[x]);
printf("tmp ans=%lld\n",ans); // printf("tmp ans=%lld\n",ans);
c[i][j]=c[i][j]=='R'?'D':'R'; c[i][j]=c[i][j]=='R'?'D':'R';
x=i,y=j; x=i,y=j;
x+=c[i][j]=='D'; x+=c[i][j]=='D';
y+=c[i][j]=='R'; y+=c[i][j]=='R';
while(x<=n && y<=n){ while(x<=n && y<=n){
cnt[x][y]+=cnt[i][j]; cnt[x][y]+=cnt[i][j];
ll nx = x+c[x][y]=='D', ny = y+c[x][y]=='R'; ll nx = x+(c[x][y]=='D'), ny = y+(c[x][y]=='R');
x=nx,y=ny; x=nx,y=ny;
} }
printf("x=%lld, y=%lld\n",x,y); // printf("x=%lld, y=%lld\n",x,y);
ans+=cnt[i][j]*(x>n?d[y]:r[x]); ans+=cnt[i][j]*(x>n?d[y]:r[x]);
std::cout<<ans<<"\n"; std::cout<<ans<<"\n";
for(ll i=1;i<=n;i++){ // for(ll i=1;i<=n;i++){
for(ll j=1;j<=n;j++){ // for(ll j=1;j<=n;j++){
printf("%c ",c[i][j]); // printf("%c ",c[i][j]);
} // }
printf("\n"); // printf("\n");
} // }
printf("\n"); // printf("\n");
} }
} }