您的位置:首页 > 其它

BZOJ 1113: [Poi2008]海报PLA 单调栈

2017-07-27 20:25 459 查看
Time Limit: 10 Sec Memory Limit: 162 MB

Submit: 1153 Solved: 785

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



HINT

Source

貌似就是单调栈扫扫就没了233

维护单调栈,只要是两个矩形,他们的高度一样,中间的都比他们高,那么就可以让答案减1,初始答案是n,因为最多覆盖n次,这道题的题目没有给清楚,可能是翻译的原因,这道题要去精确覆盖,所以我们只需要考虑刚才所说的情况,重复一遍,两个矩形的高度相同,中间的都比他们高,那么横着放一块就可以让答案减1,结论显然

#include<cstdio>
using namespace std;
int n,final,x,y,stk[250000+10],top;
int main(){
scanf("%d",&n);
final=n;
scanf("%d%d",&x,&y);stk[++top]=y;
for(register int i=2;i<=n;i++){
scanf("%d%d",&x,&y);
while(top&&stk[top]>y)top--;
if(stk[top]==y) final--;
stk[++top]=y;
}
printf("%d\n",final);
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: