UVA 815 Flooded!】的更多相关文章

题意:来自:https://blog.csdn.net/lecholin/article/details/70186673 思路: ①数组存每个网格的高度,然后排序,做题时想象为上面的柱状图. ②注意对淹没的处理. ③注意每个输出都有空行. #include "stdio.h" #include "stdlib.h" #include "string.h" #define FIN freopen("input.txt",&qu…
https://cn.vjudge.net/problem/UVA-815 题意:给你一个矩阵,每个格子的数代表一个海拔并且每个格子的面积100平方米.给你整个区域的降水量(立方米),问降水量(米). 题解:题目讲了一大堆,唯一关键就是排水系统保证水会从最低的开始淹没.所以直接从小到大不断模拟淹没即可.我用了priorityQ来维护,一个细节是一样海拔的要一起淹没. 坑点:一些无聊的人在vjudge下面xjb讨论,让我wa了好久orz #include<iostream> #include&l…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 题目很迷啊. 不会出现盆地? 可以理解为一条线. 从左往右高度上升的一座座山. 然后V升的水从最左边的山倒进去. 然后问你最后海拔多高.. (为什么是这样啊??? 鬼知道... 所以每次只要看看前i个山同时升高a[i+1]-a[i]是不是小于等于rest就好. 小于等于的话.就能持续升高. [代码] #include <bits/stdc++.h> #define rep1(i,a,b) for (int i = a;i &l…
错了好多遍,不知道为啥出错,如果有大神发现,请求指点!!! 附错误代码(错的不知道怎么回事): #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn = 32 + 5; int hblock[maxn*maxn]; /*elevation*/ int main() { int n, m; while(scanf("%d%d"…
https://vjudge.net/problem/UVA-815 题意:一个n*m的方格区域,共有n*m个方格,每个方格是边长为10米的正方形,整个区域的外围是无限高的高墙,给出这n*m个方格的初始高度,和洪水的总体积,计算灌入洪水后这个方格区域的水面高度,以及洪水淹没比例. 思路: 看这张图就很容易明白. #include<iostream> #include<algorithm> using namespace std; ]; int main() { //freopen(…
首先题意:(这个真的令人无奈,题目都看不太明白) 网上百度了一下,就是以下意思: 给你n*m个格子,每个格子的面积是10*10米,整个区域外看作无限高的墙壁.输入每个格子的海拔高度(可能为负数),以及区域内的雨水总体积,输出区域水位的海拔高度以及淹没方格的占比. 注明一下:星星假装为水,题目给出了每个格子的海平面的高度. 最最最需要知道的是,装水是两个海平面之间的那个区域可以放水,而不是我画的那个方格,存水的是方格外面的区域. 海平线高度是什么意思——每个方格的海拔相当于这个方格的固体体积,可以…
Description To enable homebuyers to estimate the cost of flood insurance, a real-estate firm provides clients with the elevation of each 10-meter by 10-meter square of land in regions where homes may be purchased. Water from rain, melting snow, and b…
先排序, 然后每个线段先放右端点, 然后往下放, 如果不能放就整体往左移动, 当不能往左移动的时候就ans++ 开始下一个整块.判断能不能向左移动要用一个变量储存每个已经放了的区间中线段与左端点距离的最小值. #include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; const int MAXN = 112345;…
这道题就是给你一n长序列, 然后把这个序列按顺序分成很多段, 每段长s(最前面可以小于s, 只有第一段的后半段, 最后面也同样, 只有最后一段的前半段), 然后要求是每一段里面没有重复的数, 问你有几种分法 实际上看到连续s个数, 就可以想到滑动窗口, 可以提前初始化所给序列的每一段里面有没有重复的数, 然后再枚举第一段的终点, 然后一段一段去判断是否全部都没有重复的数字, 如果所有段都是的话, 那么就符合题目要求, ans++ 有两个地方要注意 (1)初始化的问题.这个思路有点像扫描法, 判断…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 贪心. 把所有的区间按照右端点为第一关键字,左端点为第二关键字升序排. 然后令now = a[i].second. (now即当前的连续区间的最右端点 即第一个区间的右端点. 第一个点就应该放在这个地方. 然后对于第i+1个区间. 如果now==a[i+1].second 则把第i+1个点放在之前一连串的点的最左边的左边一个位置. 然后now保持不变 (保证有解的话,肯定是有空位置的,之前连续放的点不可能充满整个第i+1个区间的…