当前位置: 首页 > news >正文

刺杀大使--bfs还是比dfs快+二分

1.bfs遍历图,若二分的x可以满足到第n行,true

2.dfs太慢了,不能快速遍历后结束

3.二分答案--最大值最小问题

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<ll,int> pii;
int n,m;
map<int,int> mp[1005];
bool bo[1010][1010];
int an;
int f;
int w;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
typedef struct di
{
	int x,y;
}di;
void bfs(int x,int y)
{
	
	queue<di> q;
	q.push({x,y});
	bo[x][y]=true;
	while(q.size())
	{
	
	di t=q.front();
	q.pop();
	if(t.x==n) 
	{
	f=0;break;	
	}
	for(int i=0;i<4;i++)
	{
		int tx=t.x+dx[i];
		int ty=t.y+dy[i];
		if(tx>=1&&tx<=n&&ty<=m&&ty>=1&&!bo[tx][ty]&&mp[tx][ty]<=w)
		{
			bo[tx][ty]=true;
			q.push({tx,ty});
		}
	}
	}
}
bool check(int x)
{
	f=1;
	w=x;
	bfs(1,1);
	if(!f) return true;
	return false;
}
int main() {
	ios::sync_with_stdio(0);
	cout.tie(0);
	cin.tie(0);
	cin>>n>>m;
	int ma=0;
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>mp[i][j],ma=max(mp[i][j],ma);
	int l=0,r=ma;
	while(l<=r)
	{
		int mid=(l+r)>>1;
		memset(bo,false,sizeof(bo));
		if(check(mid))
		{
			an=mid;
			r=mid-1;
		}else l=mid+1;
	}
	cout<<an;
    return 0;
}

相关文章:

  • 专题|MATLAB-R语言Logistic逻辑回归增长模型在互联网金融共生及移动通信客户流失分析实例合集
  • 基于Python Flask快速构建网络安全工具资源库的Web应用实践
  • 【简历全景认知2】电子化时代对简历形式的降维打击:从A4纸到ATS的生存游戏
  • Python高阶函数-filter
  • es 原生linux部署集群
  • JS 中html的document
  • MySQL学习笔记六
  • Python爬虫生成CSV文件的完整流程
  • 谷歌洽谈租赁英伟达AI服务器:算力争夺战再升级
  • 过剩与稀缺:现代社会的思考与启示
  • 信息系统项目管理师-第十一章-项目成本管理
  • R语言:气象水文领域的数据分析与绘图利器
  • 属性修改器 (AttributeModifier)
  • 2024年已备案大模型发展趋势分析
  • spring boot + Prometheus + Grafana 实现项目监控
  • 2️⃣ Coze创建智能体教学(2025年全新版本)
  • 探索轻量高性能的 Rust HTTP 服务器框架 —— Hyperlane
  • 内存管理及内建函数
  • AI芯片混战:GPU vs TPU vs NPU的算力与能效博弈
  • 嵌入式软硬件开发,常见通信总线
  • 全红婵旧伤复发,缺席全国跳水冠军赛
  • 电影《哪吒之魔童闹海》延长上映至6月30日
  • 上海皮影戏《九色鹿》闪耀塞尔维亚,再获2项国际大奖
  • 昆明市委:今年起连续三年,每年在全市集中开展警示教育
  • 越秀地产约41.49亿元出售北京海淀功德寺项目公司65%股权,此前已质押给华润置地
  • 人民日报:不能层层加码,要层层负责