bzoj1113: [Poi2008]海報PLA(單調棧)

Hanks_o發表於2018-03-20

題目傳送門

解法:
n個矩形最多n張海報。
減少海報的條件就是兩張海報高度相同。
因為如果高度不相同的話一張海報橫著那麼其他的還是要那麼多。
所以單調棧維護下咯。

程式碼實現:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
int sta[251000];
int main() {
    int n;scanf("%d",&n);int ans=0,top=0;
    for(int i=1;i<=n;i++) {
        int a,b;scanf("%d%d",&a,&b);
        while(b<=sta[top]) {if(b==sta[top])ans++;top--;}
        sta[++top]=b;
    }printf("%d\n",n-ans);
    return 0;
}

相關文章