bzoj1113】的更多相关文章

题目链接 BZOJ1113 题解 显然只与高有关,每次选择所有海报中最低的覆盖所有海报,然后分治两边 每个位置会被调用一次,复杂度\(O(nlogn)\) \(upd:\)智障了,,是一道\(O(n)\)普及-贪心模拟题QAQ #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #…
BZOJ1113 Poi2008 海报PLA Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值在[1,1000000000]2 1/2 Postering Output 最少数量的海报数. Sample Input 5 1 2 1 3 2 2 2 5 1 4 Sample Output 4 直接单调栈扫过去就可以了 注意合并高度相等的情况 #in…
1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 896  Solved: 573[Submit][Status][Discuss] Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值在[1,1000000000]2 1/2 Postering Output 最…
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define maxn 250005 using namespace std; int n,top,stack[maxn],ans; int main(){ int u,v; scanf("%d",&n); top=ans=,me…
好像是很古老的题?现在BZOJ上找不到该题,所以没有提交. 1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 810  Solved: 507[Submit][Status][Discuss] Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. (SilverN附注:矩形外不能贴海报) Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1113 题解:单调栈 代码: #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define maxn 250005 using namespace std; int n; int a[maxn],b[maxn],z[maxn]; int main() {…
浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=1113 从左往右扫,分情况讨论. 1.如果当前矩形和上一个矩形高度一样,那么就直接融为一体就好了. 2.如果当前矩形比上一个高,那么在上一个高度以内的部分由之前的部分延伸过来,高出的那一部分多用一块海报去遮住. 3.如果当前矩形比上一个低,如果之前有和当前矩形一样高度的矩形并且中间没有更低的矩形…
题目: 洛谷3467 分析: (ti jie shuo)这题是个单调栈经典题. 单调栈就是栈元素递增或递减的栈,这里只考虑递增.新元素入递增栈时,先将所有比它大的元素弹出,然后让新元素入栈,这样保证栈顶永远是最大的元素,代码如下:(\(a\)是新元素) while(top>0&&stack[top]>a)top--; stack[++top]=a; 然后来分析这道题.我这种蒟蒻乍一看一脸懵逼,但是可以注意到这样一个事实: 如果先让每个楼都贴一张海报(\(ans=n\)),如果两…
一,自己思考下 1,先自己思考下 N个矩形,排成一排,现在希望用尽量少的海报去cover住它们. 2,不懂. 着实不懂. 3,分析下,最优性问题对吧,然后就每什么想法了.. 虽然肯定和单调栈和单调队列有啥关系来着. 二,听课 1,由图观察得知,至少有一栋楼是被完全覆盖的 2,覆盖的楼不整齐的话必然不优,这人费曼肯定没学,好!! 3,f[i]表示将第i栋楼完全覆盖,并以该房屋的高度将广告向左延申的最大距离 为啥向左,就是我们来的方向呢>因为左右对称?? 4,什么倒着左边右边也一样? 从左往右一遍,…
ans肯定不会超过n,因为我们可以每一列都放一个矩阵考虑减小答案,肯定是要放横的,也就是让两个高度一样的矩阵同时被消除掉,那么中间不能存在比他们低的矩阵问题即判断一个点之前第一个小于等于它的点是不是等于他(等于就ans-1),然后用单调栈维护之前的递减即可 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,ans,a[300005],s[300005]; 4 int main(){ 5 scanf("%d",&…