bzoj1104: [POI2007]洪水pow
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#define maxn 1005
#define maxm 1000005
using namespace std;
int m,n,ans,hi[maxm],fa[maxm],now[maxn],prep[maxm],bo[maxm];
bool color[maxm];
void add(int x,int y){
prep[x]=now[y],now[y]=x;
}
int find(int x){
if (fa[x]!=x) fa[x]=find(fa[x]);
return fa[x];
}
void Connect(int x,int y){
int t1,t2;
t1=find(x),t2=find(y);
if (t1==t2) return;
if (bo[t1]==) fa[t2]=t1;
else fa[t1]=t2;
}
void connect(int x){
if (x>n&&hi[x]>=hi[x-n]) Connect(x-n,x);
if (x<=(n*m-n)&&hi[x]>=hi[x+n]) Connect(x+n,x);
if ((x%n)!=&&hi[x]>=hi[x-]) Connect(x-,x);
if ((x%n)!=&&hi[x]>=hi[x+]) Connect(x+,x);
}
int main(){
scanf("%d%d",&m,&n);
for (int i=;i<=m;i++){
for (int u,v,j=;j<=n;j++){
scanf("%d",&u),v=(i-)*n+j;
if (u>) color[v]=,hi[v]=u;
else color[v]=,hi[v]=-u;
}
}
memset(now,,sizeof(now)),ans=;
for (int i=;i<=n*m;i++) add(i,hi[i]);
for (int i=;i<=n*m;i++) fa[i]=i;
memset(bo,,sizeof(bo));
for (int i=;i<=;i++){
for (int u=now[i];u;u=prep[u]){
connect(u);
}
for (int u=now[i];u;u=prep[u]){
int v=find(u);
if (!bo[v]&&color[u]==) ans++,bo[v]=;
}
}
printf("%d\n",ans);
return ;
}
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1104
做法:我们将所有的点按高度进行排序,排完序后以此加入这些点,加入时,我们用把四周比它矮的点并到一个集合当中,因为可能已有抽水机了,并完后,如果这是该市的一个区域,且它所在集合中没有抽水机,那么我们就在该集合放一架抽水机,否则跳过。注意高度相同的点。
并查集+贪心+poi思路题。
bzoj1104: [POI2007]洪水pow的更多相关文章
- [POI2007]洪水pow 题解
[POI2007]洪水pow 时间限制: 5 Sec 内存限制: 128 MB 题目描述 AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD ...
- [POI2007]洪水pow
Description AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商 ...
- 【BZOJ】1104: [POI2007]洪水pow
题意 给一个\(n * m(1 \le n, m \le 1000)\)的矩阵,如果\(a_{i, j}\)为正表示城市.\(|a_{i, j}|(|a_{i, j}| \le 1000)\)是格子\ ...
- [POI2007]洪水pow 并查集
我们先得出一个结论:水泵要建在城市上.因为如果在非城市上建能把其他一些城市抽干,那么在城市上建也是一个效果(自己画图感性理解一下) 然后我们明白抽水的条件:周围的高度要>=自身的高度,这样会抽完 ...
- [POI2007]洪水pow bfs
发现:只在所有自己的城市建水泵一定是最优解. 所以对自己的城市按高度排序,该城市不用建的前提是从他出发经过一条高度都小于等于他的路径能到达一个已经修建水泵的 sort+bfs...... #inclu ...
- 并查集 - BZOJ 1104 [POI2007]洪水
BZOJ 1104 [POI2007]洪水 描述 AKD 市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD 市全被水淹没了.Blue Mary,AKD 市的市长,召集了他的所有顾问(包括你 ...
- 洪水 Pow
Description AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [洛谷3457][POI2007]POW-The Flood
洛谷题目链接:[POI2007]POW-The Flood 题意翻译 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方 ...
随机推荐
- GET请求参数为中文时乱码分析
问题描述 近期做任务时,跟后端联调时遇到一个问题,前端发送get请求,当参数值有中文时,请求失败,请求参数变为乱码.(ps:一般当参数有中文时,很少使用get请求,而是使用post请求来传输数据,请求 ...
- 【软件编程】乐易贵宾VIP教程 - JS改写+网页操作系列教程
JS改写系列教程: 1.MD5加密改写教程(爱拍网登录)2.解密如何快速找到真确的js加密算法3.多重MD5加密改写教程(5173登录)4.DZ论坛登录加密改写5.唯品会手机登录加密改写6.新浪微博密 ...
- 前端科普文—为什么<!DOCTYPE> 不可或缺
When question comes 你一定在 HTML 页面最前面看到过这样一行代码(比如 百度): <!DOCTYPE html> 或者说类似这样的(比如 博客园-韩子迟 PS:博客 ...
- jQuery api 快速参考[转]
选择符 匹配 * 所有元素 #id 带有给定ID的元素 element 给定类型的所有元素,比如说html标签 .class 带有给定类的所有元素 a,b 匹配a或者匹配b的元素 a b 作为a后代的 ...
- Mecanim动画模型规范
面数控制, 以三角面计算 不要超过4边的面 光滑组,法线 单位CM,单位比例 中心点 3DMax:Reset Transform Maya:Freeze Transformation 帧率:30帧 不 ...
- word2vec 实践
关于word2vec,这方面无论中英文的参考资料相当的多,英文方面既可以看官方推荐的论文,也可以看gensim作者Radim Řehůřek博士写得一些文章.而中文方面,推荐 @licstar的< ...
- [转]论acm与泡妞
abstract :本文从各个方面讨论了泡妞与做题之间的相似之处与不同点,尽量的站在一个公平的角度阐述这一问题,所得的研究成果填补了国内外的理论空白. - 泡了一个好妞就好像做了一道难题一样快感都是相 ...
- Ubuntu下安装支付宝安全控件
在淘宝购物时,安装支付宝安全控件.下载了一个文件.tar.gz(非常小的一个文件). tar -zxvf 解压之,只有一个aliedit.sh文件,运行这个文件就安装成功了,重启firefox就可以用 ...
- LINQ日常使用记录
1.公司一位美女程序媛写的 2.技术总监提供(来自互联网) var query = from f in db.TField join fw in db.TFieldWel on f.emp_no eq ...
- openldap+phpadmin的搭建安装
1.概念介绍 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据 ...