当前位置:网站首页>扩散(多源广搜)
扩散(多源广搜)
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);
}
边栏推荐
- c# Xml帮助类
- Oracle create user + Role
- How to transmit and share 4GB large files remotely in real time?
- 从诺奖知“边缘计算”的未来!
- SQL必会题之留存率
- 云盘里资料被和谐了,怎么办?
- Cjc8988 Low Power Stereo codec with 2 stereo headphone drivers
- OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)
- Pla ne colle pas sur le lit: 6 solutions simples
- Infinite horizontal marble game
猜你喜欢

How to add a gourd pie plate

PLA not pasted on the bed: 6 simple solutions

让田头村变甜头村的特色农产品是仙景芋还是白菜

It's not that you have a bad mind, but that you haven't found the right tool

SystemVerilog学习-08-随机约束和线程控制

FPGA - 7系列 FPGA内部结构之Clocking -01- 时钟架构概述

数据库问题,如何优化Oracle SQL查询语句更快,效率更高

TIDB数据库特性总结

云盘里资料被和谐了,怎么办?

Linux closes the redis process SYSTEMd+
随机推荐
Thoughts on a "01 knapsack problem" expansion problem
Multi label lsml for essay learning records
ArcServer密码重置(账号不可以重置)
Beauty of Mathematics - Application of Mathematics
Flink实战--多流合并
穿越派·派盘 + Mountain Duck = 数据本地管理
SystemVerilog学习-06-类的封装
[note] e-commerce order data analysis practice
Seven major technical updates that developers should pay most attention to on build 2022
One of the characteristic agricultural products that make Tiantou village, Guankou Town, Xiamen into a "sweet" village is
Freeswitch dial the extension number
On the first day of the new year, 3000 Apache servers went down
Essay learning record essay multi label Global
OpenGL es: (3) EGL, basic steps of EGL drawing, eglsurface, anativewindow
Stack Title: parsing Boolean expressions
QT write custom control - self drawn battery
uniapp树形层级选择器
Leetcode Max rectangle, Max square series 84 85. 221. 1277. 1725. (monotonic stack, dynamic programming)
PLA不粘貼在床上:6個簡單的解决方案
Excel dynamic chart