全部评论
我第三题90,第四题66
我第三道是86.33%,第四道用广度优先26%
贴个第三题代码,%86.67的正确率
第四题我这样写的也a了,没用二分 #include<bits/stdc++.h> using namespace std; int dx[4]={-1,0,1,0}; int dy[4]={0,-1,0,1}; int main(){ int n,m,x,y,z,w; cin>>n>>m; cin>>x>>y; cin>>z>>w; vector<vector<int>> g(n,vector<int>(m)); for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>g[i][j]; queue<pair<int,int>> q; q.push(make_pair(x-1,y-1)); vector<vector<int>> f(n,vector<int>(m,INT_MAX)); f[x-1][y-1]=g[x-1][y-1]; while(!q.empty()){ auto [a,b]=q.front(); q.pop(); for(int i=0;i<4;i++){ int nx=a+dx[i],ny=b+dy[i]; if(nx<0||nx>=n||ny<0||ny>=m) continue; if(max(g[nx][ny],f[a][b])>f[nx][ny]){ f[nx][ny]=max(g[nx][ny],f[a][b]); q.push(make_pair(nx,ny)); } } } cout<<f[z-1][w-1]<<endl; return 0; }
相关推荐