BFS,字串,寫在院賽之後
阿新 • • 發佈:2020-12-21
這天洛谷打卡是大凶,愣是沒有想到真的是大凶
先開了道樹的題目,愣是半天以為是並查集,結果第一題簡單字串也TM的抽了沒做出來,最後一題用BFS做結果行列n,m寫反過不了
題目,簡單字串:
題目懶得抄了,就TM的給兩段字串看移位,如234567891和123456789
就他媽的不知道字串find,直接第一個字串加自己,變成兩倍,然後就可以查詢第二段字串在不在第一段裡面(已給定長度相等)
就尼瑪的三句話:1.s+=s;2.if(s.find(s2)!=string::npos) cout<<"YES";else cout<<"NO";3.我是傻逼;
字串的x,y比不是座標軸裡的x,y,是他媽的行列,結果判斷出界反了,****
#include <bits/stdc++.h> using namespace std; const int N=2e3+10; char g[N][N]; typedef pair<int,int> pii; queue<pii> q; int drex[4]={0,0,-1,1}; int drey[4]={-1,1,0,0}; int n,m; int cnt; void bfs(int i,int j) { q.push({i,j}); g[i][j]='0'; while(q.size()) { auto t=q.front(); q.pop(); for(int i=0;i<=3;i++) { int x=t.first+drex[i],y=t.second+drey[i]; if(x>=1&&x<=n&&y>=1&&y<=m&&g[x][y]>='1'&&g[x][y]<='9') { g[x][y]='0'; q.push({x,y}); } } } }int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>g[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(g[i][j]>='1'&&g[i][j]<='9') { bfs(i,j); cnt++; } } } cout<<cnt; }
我無話可說,我是five