首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
hdu5575
】的更多相关文章
hdu5575
题解: 每一次最短的那块板合并 先装水到溢出 然后合并 代码: #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; typedef pair<int,int> mp; ; vector<mp> vec; int LH[N],RH[N],L[N],R[N],O[N],X[N],heap[N],l[N],r…
hdu5575 Discover Water Tank
题意: 给出个水箱,水箱两侧有无限高的隔板,水箱内有整数高度的隔板将水箱分成n-1份,现在给出m个限制,每个限制表示某个位置的某个高度有水或没水,问最多能同时满足多少个限制.n,m<=2*10^5 分析: “某个位置有水”的限制会导致从这个位置向两侧扩展的一个区间都有这个高度的水.只要找到从这个位置向左/向右第一个比这个限制的水位高的挡板即可,可以用单调栈+二分O(nlogn)求出所有区间,每个区间对应有一个高度(就是这个限制的水位高度).如果某个有水的区间对应的高度下方有一个位置存在”这个位置…
HDU 5575 Discover Water Tank(左偏树)
https://vjudge.net/problem/HDU-5575 题意: 有一个水箱,被n-1块板子分成了n个部分,板子的高度不尽相同.现在有m次探测,每次探测在第x部分的y+0.5高度处是否有水,回答0代表没水,1代表有水.现在要求出这m次探测最多有多少次是正确的. 思路: 挺难的一道题目吧. 一开始如果把水箱当成空的,那么所有的无水探测就都是真的,至于有水探测的话,接下来我们可以一点一点的加水,这就要求将有水探测排序.每个部分可能会有多个无水探测(比如在第1部分,它进高度为1.3.5的…