当前位置:网站首页>扩散(多源广搜)
扩散(多源广搜)
2022-07-01 06:06:00 【大 聪 明】
小蓝在一张无限大的特殊画布上作画。
这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。
小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)
只有这几个格子上有黑色,其它位置都是白色的。
每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。
请问,经过 2020分钟后,画布上有多少个格子是黑色的。
分析:四个点同时扩散,要考虑到重叠的问题,而且越是后面一秒扩散的点越多,开始写的是每个点分别广搜一遍,如果第一个点扩散到了第二个点且已经标记了,到第二个点的时候就不会搜索了,结果也就错了;
所以多源头同时搜索,当有点重叠的时候,先来的源头点说明剩余的时间更多,后续扩散的范围也最大,后来的源头点时间少,扩散范围肯定没有先来的大;
再说一下为什么不用广搜,2020个节点复杂度高,时间长,广搜可以通过空间来节省时间
#include<bits/stdc++.h>
using namespace std;
int ans=4;
int book[9999][9999];
int nex[4][2]={
0,1,0,-1,1,0,-1,0};
struct node
{
int x,y,z;
}l,head;
queue <node> q;
void bfs()
{
while( !q.empty() )
{
head=q.front();
q.pop();
if(head.z>=2020)
continue;
for(int i=0;i<4;i++)
{
int tx=head.x+nex[i][0];
int ty=head.y+nex[i][1];
if(book[tx][ty]==0)
{
book[tx][ty]=1;
ans++;
l.x=tx;
l.y=ty;
l.z=head.z+1;
q.push(l);
}
}
}
}
int main()
{
book[3000][3000]=1;
book[5020][3011]=1;
book[3011][3014]=1;
book[5000][5000]=1;
l.x=3000;
l.y=3000;
l.z=0;
// q.push(l);
q.push({
3000,3000,0});
//这样写也可以,前边已经规定队列为结构体类型
// bfs();
l.x=5020;
l.y=3011;
l.z=0;
q.push(l);
// bfs();
l.x=3011;
l.y=3014;
l.z=0;
q.push(l);
// bfs();
l.x=5000;
l.y=5000;
l.z=0;
q.push(l);
bfs();
printf("%d\n",ans);
}
边栏推荐
- Pla ne colle pas sur le lit: 6 solutions simples
- Through cooperation with the University of international trade, we can increase efficiency for college students
- excel动态图表
- 穿越派 你的数据云行
- 可动的机械挂钟
- What if the data in the cloud disk is harmonious?
- highmap gejson数据格式转换脚本
- Bat operation FTP upload and download command
- Record currency in MySQL
- 数据库er图组成要素
猜你喜欢

excel可视化

el-table 动态表头渲染 固定第一列 高度问题

QT write custom control - self drawn battery

68 Cesium代码datasource加载czml

OpenGL es: (3) EGL, basic steps of EGL drawing, eglsurface, anativewindow

ONEFLOW source code parsing: automatic inference of operator signature

论文学习记录随笔 多标签之LIFT
![[note] e-commerce order data analysis practice](/img/03/367756437be947b5b995d5f7f55236.png)
[note] e-commerce order data analysis practice

SystemVerilog学习-10-验证量化和覆盖率

Leetcode Max rectangle, Max square series 84 85. 221. 1277. 1725. (monotonic stack, dynamic programming)
随机推荐
千万不要把笔记视频乱放!
What if the data in the cloud disk is harmonious?
Some errors encountered in MySQL data migration
He struggled day and night to protect his data
表格中el-tooltip 实现换行展示
解决麒麟V10上传文件乱码问题
DEV XPO对比之UOW
FPGA - 7系列 FPGA内部结构之Clocking -01- 时钟架构概述
SystemVerilog学习-06-类的封装
Linux closes the redis process SYSTEMd+
el-table 动态表头渲染 固定第一列 高度问题
Through cooperation with the University of international trade, we can increase efficiency for college students
Why use huluer pie disk instead of U disk?
Oracle sequence + trigger
数据库问题,如何优化Oracle SQL查询语句更快,效率更高
TIDB数据库特性总结
论文学习记录随笔 多标签之LIFT
Pit of kotlin bit operation (bytes[i] and 0xff error)
Record currency in MySQL
OpenGL ES: (2) OpenGL ES 与 EGL、GLSL的关系