社区讨论

卧龙凤雏!

P3395路障参与者 6已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@m1cz7y96
此快照首次捕获于
2024/09/22 10:45
去年
此快照最后确认于
2025/11/04 19:57
4 个月前
查看原帖
今日,蒟蒻让蒟蒻改一下他的错误,于是蒟蒻试图帮他改一下代码,结果蒟蒻与蒟蒻都很蒟蒻,是一对卧龙凤雏!!!

这是这位蒟蒻的代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int t,n,x,y,cnt=1,f[1002][1002];
bool vis[1002][1002];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
queue<pair<int,int> >q;
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=n;i++)
		   for(int j=1;j<=n;j++){
		       vis[i][j]=0;
		       f[i][j]=-1;
			}
		f[1][1]=0;
		q.push({1,1});
		while(!q.empty()){
			pair<int,int> k=q.front();q.pop();
			int bx=k.first,by=k.second;
			if(f[bx][by]==cnt and cnt<=2*n-2){
				cin>>x>>y;
				vis[x][y]=1;
				cnt++;
			}
			for(int i=0;i<4;i++){
				int nx=bx+dx[i],ny=by+dy[i];
				if(nx<1 or ny<1 or nx>n or ny>n or f[nx][ny]!=-1 or vis[nx][ny]) continue;
				f[nx][ny]=f[bx][by]+1;
				q.push({nx,ny});
			}
		}
		if(f[n][n]==-1) cout<<"No"<<endl;
		else cout<<"Yes"<<endl;
	}
	return 0;
}
只有1测试点对了,其他都错了!

这是本蒟蒻的代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int t, n;
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};

int main() {
    cin >> t;
    while (t--) {
        cin >> n;
        vector<vector<int>> f(n + 2, vector<int>(n + 2, -1)); 
        queue<pair<int, int>> q;
        q.push({1, 1});
        f[1][1] = 0;
        
        for (int time = 0; time < 2 * n - 2; ++time) {
            int size = q.size();
            for (int i = 0; i < size; ++i) {
                pair<int, int> k = q.front(); q.pop();
                int bx = k.first, by = k.second;
                
                for (int j = 0; j < 4; ++j) {
                    int nx = bx + dx[j], ny = by + dy[j];
                    if (nx >= 1 && nx <= n && ny >= 1 && ny <= n && f[nx][ny] == -1) {
                        f[nx][ny] = time + 1; 
                        q.push({nx, ny});
                    }
                }
            }
            int x,y;
            cin >> x >> y;
            f[x][y] = -2; 
        }
      
        if (f[n][n] == -1) {
            cout << "No" << endl;
        } else {
            cout << "Yes" << endl;
        }
    }
    return 0;
}
只有1测试点错了,其他都对了!

所以我们还要再来一名蒟蒻,帮我们解决一下这美妙的问题w(゚Д゚)w!

回复

10 条回复,欢迎继续交流。

正在加载回复...