码迷,mamicode.com
首页 > 其他好文 > 详细

海报PLA (HYSBZ - 1113)单调栈模板

时间:2018-08-01 18:18:08      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:EDA   src   开始   必须   入栈   有一个   ima   ring   bubuko   

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

技术分享图片                             技术分享图片

 


先解释下题意,题目说的不是很清楚

看上面两幅图,是样例的排列方式,其中可以发现有一个隐藏条件,空白不能被覆盖(我刚开始看到题目以为一大张糊上去就可以了……)

当遇到一低一高时,必须要用两张,但如果后面有一个和第一张高度相等的,三张海报,两张就覆盖了----省了一张

但如果一高一低,无论如何都省不了,再于后面就无关了

 

因此:

我们用一个单调栈,宽度不管,就看高度

小的入栈,大的不管,如果相等,可省一张

 

代码如下:

#include<stdio.h>
#include<algorithm>
using namespace std;
int a[250001],stk[250001],top,n,k;

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        int d,h;
        scanf("%d%d",&d,&h);
        while(top>0 && h<=stk[top]){
            if(h==stk[top]) k++;
            top--;
        }
        stk[++top]=h;
    }
    printf("%d",n-k);
    return 0;
}

 

海报PLA (HYSBZ - 1113)单调栈模板

标签:EDA   src   开始   必须   入栈   有一个   ima   ring   bubuko   

原文地址:https://www.cnblogs.com/qseer/p/9402442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!