全TLE求助,报酬一关

P1913 L国的战斗之伞兵

随便搞个循环就卡死了,, ``` 2 2 rd ul ```
by _Karasu_ @ 2023-03-22 20:50:48


顺便一提,这个 swap 实现是 UB
by _Karasu_ @ 2023-03-22 20:51:07


```cpp #include <bits/stdc++.h> using namespace std; int p[1501][1501],c[1501][1501],qx[2000001],qy[2000001],ans,n,m; char a[1501][1501]; int main(){ cin >> n >> m; for(int i = 1;i <= n;++i){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } for(int i = 1;i <= n;++i){ for(int j = 1;j <= m;++j){ int x = i,y = j,cnt=0,add=0; while(1){ c[x][y]++; qx[++cnt]=x; qy[cnt]=y; if(a[x][y] == 'o'||p[x][y]==1){ add=1; } else if(x==0||y==0||x>n||y>m||p[x][y]==-1||c[x][y]>2){ add=-1; } if(add!=0){ for(int k=1;k<=cnt;k++){ p[qx[k]][qy[k]]=add; c[qx[k]][qy[k]]+=add; } ans+=(add==1); break; } if(a[x][y] == 'u'){ x -= 1; }else if(a[x][y] == 'd'){ x += 1; }else if(a[x][y] == 'l'){ y -= 1; }else if(a[x][y] == 'r'){ y += 1; } } } } cout << ans; return 0; } ```
by lucas_777 @ 2023-07-03 09:01:05


|