[Poi2008]海报PLA

传送门

sb单调栈,唯一要注意的是高度相同的时候不需要更新答案
代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
void read(int &x) {
    char ch; bool ok;
    for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
    for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=2.5e5+10;
int n,a[maxn],st[maxn],top,ans;
int main()
{
    read(n);
    for(rg int i=1,j;i<=n;i++)read(j),read(a[i]);
    for(rg int i=1;i<=n;i++)
    {
        while(a[i]<=st[top])ans+=a[i]==st[top]?0:1,top--;
        st[++top]=a[i];
    }
    ans+=top;
    printf("%d\n",ans);
}

原文地址:https://www.cnblogs.com/lcxer/p/10387281.html

时间: 2024-11-12 01:50:36

[Poi2008]海报PLA的相关文章

BZOJ 1113: [Poi2008]海报PLA

题目 1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MB 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 Sa

bzoj1113[Poi2008]海报PLA*

bzoj1113[Poi2008]海报PLA 题意: N个矩形,排成一排.现在希望用尽量少的矩形海报盖住它们.不能盖到矩形之外的地方.n≤250000. 题解: 发现如果有一对矩形高度相等,且中间的矩形高度都比它们高,那么就可以省下一个矩形海报.故可以用个单调递增的栈维护. 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <stack> 5 #def

【BZOJ 1113】 [Poi2008]海报PLA

1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 751  Solved: 453 [Submit][Status] Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值在[1,1000000000]2 1/2 Postering Output 最少数量的海报数

1113: [Poi2008]海报PLA

1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 765  Solved: 466[Submit][Status][Discuss] Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值在[1,1000000000]2 1/2 Postering Output 最

BZOJ1113 海报PLA

好像是很古老的题?现在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行,每

【单调栈】【bzoj1113】海报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 题解:单调栈的水题,维护一个递增的单调栈,退栈时如果遇到相等,就代表可以少用一张海报. #i

bzoj 1113 海报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 [解析] 单调增栈. 显然贴海报只与矩形的高有关.发现当两个矩形高相同并且这两个矩形之间的矩形的高度都

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

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                               先解释下题意,题目说的不是很清楚 看上面两幅图,是样例的排列方式,

$bzoj1113-POI2008$ 海报$PLA$ 单调栈

题面描述 \(N\)个矩形,排成一排. 现在希望用尽量少的矩形海报\(Cover\)住它们. 输入格式 第一行给出数字\(N\),代表有\(N\)个矩形.\(N\)在\([1,25*10^4]\) 下面\(N\)行,每行给出矩形的长与宽.其值在\([1,10^9]\) 输出格式 最少数量的海报数. 题解 维护单调减的单调栈,如果存在两个柱子高度相等,且他们中间的所有柱子都大于他们的高度,那么这两个柱子就可以用同一个海报覆盖 #include<iostream> #include<cstd