洛谷 P2335 SDOI 2005 毒瘤 位图(也补上注释了)
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring> using namespace std;
int m,n;
int pho[200][200];
int f[200][200];
int vis[200][200],looked;
struct t{
int x,y,cost;
};
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
queue <t> q;
void bfs()
{
memset(f,0x3f,sizeof(f)); t p;
while(!q.empty())
{
p=q.front();
q.pop();
int x=p.x;
int y=p.y;
vis[x][y]++;
int cost=p.cost;
if(vis[x][y]>=looked*2) continue; //每个点在正常情况下会被访问最多n(looked)次,为了保险乘了2
if(f[x][y]<cost) continue; //类似于一个剪枝,记录在当前状态已经做过一次比他更优的计算(cost为当前距离,f标记每个点最小距离)
f[x][y]=cost;
for(int i=0;i<=3;i++)
{
if(x+dx[i]<=n&&x+dx[i]>=1&&y+dy[i]<=m&&y+dy[i]>=1)
{
t a;
a.x=x+dx[i];
a.y=y+dy[i];
a.cost=cost+1;
q.push(a);
}
}
}
return ;
}
int main()
{
scanf("%d %d",&n,&m);
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
scanf("%d",&pho[i][j]);
t b;
b.x=i;
b.y=j;
b.cost=0;
if(pho[i][j]==1)
{
looked++;
q.push(b);
}
}
bfs();
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
printf("%d ",f[i][j]);
}
printf("\n");
}
return 0;
}
好久没写广搜了,UPD(2019.6.18) 更新了部分注释,如果有问题可以评论区问,暑假应该会很快回复的
一遍过,没什么注意的,理论上每个点最多被刷新白点个数个次数,为了保险弄了个*2
洛谷 P2335 SDOI 2005 毒瘤 位图(也补上注释了)的更多相关文章
- 洛谷P2468 SDOI 2010 粟粟的书架
题意:给你一个矩形书架,每个点是这本书的页数,每次询问(x1,y1)(x2,y2)这个小矩形里最少需要取几本书使得页数和等于Hi. 题解:小数据二位前缀和预处理+二分答案,大数据一行所以用主席树做,感 ...
- 洛谷 P2335 [SDOI2005]位图
OJ检测链接:https://www.luogu.org/problem/show?pid=2335 题目描述 现在我们给出一个n*m的单色位图,且该图中至少含有一个白色的像素.我们用(i, j)来代 ...
- 洛谷 - P2335 - 位图 - 简单dp
https://www.luogu.org/problemnew/show/P2335 假如我们使用dp的话,每次求出一个点的左上方.右上方.左下方.右下方的最近的白点的距离.那么只是n²的复杂度.这 ...
- 洛谷P4242 树上的毒瘤
解:首先有个套路是一条边的权值是[两端点颜色不同].这个用树剖直接维护,支持修改. 每次询问建虚树,查询虚树上每条边的权值.然后树形DP,用开店的方法,每个点链加链查. #include <bi ...
- 洛谷 P2577 [ ZJOI 2005 ] 午餐 —— DP + 贪心
题目:https://www.luogu.org/problemnew/show/P2577 首先,想一想可以发现贪心策略是把吃饭时间长的人放在前面: 设 f[i][j] 表示考虑到第 i 个人,目前 ...
- 洛谷 P4426 - [HNOI/AHOI2018]毒瘤(虚树+dp)
题面传送门 神仙虚树题. 首先考虑最 trival 的情况:\(m=n-1\),也就是一棵树的情况.这个我相信刚学树形 \(dp\) 的都能够秒掉罢(确信).直接设 \(dp_{i,0/1}\) 在表 ...
- 洛谷P3373 线段树2(补上注释了)
毒瘤题.找了一下午+晚上的BUG,才发现原来query_tree写的是a%p; 真的是一个教训 UPD:2019.6.18 #include<iostream> #include<c ...
- 洛谷P1019 单词接龙题解(超详细注释)
https://www.luogu.org/problem/P1019 #include<cstdio> #include<cstring> #include<iostr ...
- 洛谷 P4710 「物理」平抛运动
洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...
随机推荐
- [ZOJ1610]Count the Colors
Description 画一些颜色段在一行上,一些较早的颜色就会被后来的颜色覆盖了. 你的任务就是要数出你随后能看到的不同颜色的段的数目. Input 每组测试数据第一行只有一个整数n, 1 < ...
- 图论/位运算 Codeforces Round #285 (Div. 2) C. Misha and Forest
题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...
- 题解报告:hdu 1075 What Are You Talking About
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075 Problem Description Ignatius is so lucky that he ...
- Android网络连接判断与检测
转自: http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html 本文主要内容: 1)判断是否有网络连接 2)判断WIFI网络是否 ...
- C# PropertyInfo(官网)
using System; using System.Reflection; class Module1 { public static void Main() { // This variable ...
- jsp的简介
https://www.w3cschool.cn/jsp/jsp-intro.html
- 2556. [NOIP2016]玩具谜题
[题目描述] 小南有一套可爱的玩具小人,它们各有不同的职业.有一天,这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝国内,有的面朝圈外.如下图: 这时singer告诉小南 ...
- swiper4初始化/swiper-init/data-swiper
用data属性初始化swiper <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- 一种结合hudson的算法自动化测试构想
作者:朱金灿 来源:http://blog.csdn.net/clever101 有时我在思考:未来软件测试的趋势是什么?其实答案和其它行业一样简单:低技术含量的测试工作都将由机器承担,人只能干机器干 ...
- Mysql:is not allowed to connect to this MySQL server [转]
原文链接http://www.blogjava.net/acooly/archive/2008/09/17/229368.html 如果你想连接你的mysql的时候发生这个错误:ERROR 1130: ...