LG_3457_[POI2007]POW-The Flood】的更多相关文章

题目描述 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是该市的一个组成部分.地图上的所有部分都被水淹没了.并且,由于这张地图描绘的地面周围都被高山所环绕,洪水不可能自动向外排出.显然,我们没有必要抽干那些非该市的区域. 每个巨型抽水机可以被放在任何一个1∗1正方形上.这些巨型抽水机将持续地抽水直到这个正方形区域里的水被彻底抽干为止.当然,由连通器原理,所有能向这个格子溢…
洛谷题目链接:[POI2007]POW-The Flood 题意翻译 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是该市的一个组成部分.地图上的所有部分都被水淹没了.并且,由于这张地图描绘的地面周围都被高山所环绕,洪水不可能自动向外排出.显然,我们没有必要抽干那些非该市的区域. 每个巨型抽水机可以被放在任何一个1∗1正方形上.这些巨型抽水机将持续地抽水直到这个正方形区域…
题目传送门 pow 题意翻译 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是该市的一个组成部分.地图上的所有部分都被水淹没了.并且,由于这张地图描绘的地面周围都被高山所环绕,洪水不可能自动向外排出.显然,我们没有必要抽干那些非该市的区域. 每个巨型抽水机可以被放在任何一个1∗1正方形上.这些巨型抽水机将持续地抽水直到这个正方形区域里的水被彻底抽干为止.当然,由连通器原理…
[POI2007]洪水pow 时间限制: 5 Sec  内存限制: 128 MB 题目描述 AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商议之后,会议决定,调集若干巨型抽水机,将它们放在某些被水淹的区域,而后抽干洪水.你手头有一张AKD市的地图.这张地图是边长为m*n的矩形,被划分为m*n个1*1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是A…
[POI2007]POW-The Flood Description AKD 市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD 市全被水淹没了.Blue Mary,AKD 市的市长,召集了他的所有顾问(包括你)参加一 个紧急会议.经过细致的商议之后,会议决定,调集若干巨型抽水机,将它们放 在某些被水淹的区域,而后抽干洪水. 你手头有一张 AKD 市的地图.这张地图是边长为 mn 的矩形,被划分为 mn个 11 的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是 A…
题意翻译 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是该市的一个组成部分.地图上的所有部分都被水淹没了.并且,由于这张地图描绘的地面周围都被高山所环绕,洪水不可能自动向外排出.显然,我们没有必要抽干那些非该市的区域. 每个巨型抽水机可以被放在任何一个1∗1正方形上.这些巨型抽水机将持续地抽水直到这个正方形区域里的水被彻底抽干为止.当然,由连通器原理,所有能向这个格子溢…
#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 colo…
题意 给一个\(n * m(1 \le n, m \le 1000)\)的矩阵,如果\(a_{i, j}\)为正表示城市.\(|a_{i, j}|(|a_{i, j}| \le 1000)\)是格子\((i, j)\)的海拔.现在需要放最少的抽水机,使得把所有城市的水都抽干.自行脑部抽水机是怎么工作的. 分析 容易发现: 存在最优解使得抽水机都放在城市中. 一定是从海拔低的城市开始放. 题解 根据传递性,在\((i, j)\)放了抽水机,如果上下左右有海拔比自己高的(或等于),则那个格子也相当于…
我们先得出一个结论:水泵要建在城市上.因为如果在非城市上建能把其他一些城市抽干,那么在城市上建也是一个效果(自己画图感性理解一下) 然后我们明白抽水的条件:周围的高度要>=自身的高度,这样会抽完它.如果低的话,会降低旁边位置的水位(这很重要) 然后我们枚举每一个城市,看它用不用建造.这样在每一个城市,枚举所有位置,看这个位置能不能被四周的抽干,这样用并查集维护,能抽干的都是一个祖先 这样枚举完一遍后,看这个城市所连的并查集有没有被抽干,如果没有,就在那里建造即可 #include<iostre…
题意 见luogu Sol 贪心 从小到大枚举高度,把小于等于这一高度的相邻格子用并查集合并 那么这个集合内的所有格子都一定可以由这个集合内的一个最低点抽完水 那么合并之后(一定要在合并之后) 判断这一高度是否有城市,有则检查它所在的集合是否放了抽水机,没有就在这个集合中放一个 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a))…