标签:over return 判断 images namespace std img 矩形 can
【解析】
单调增栈。
显然贴海报只与矩形的高有关。发现当两个矩形高相同并且这两个矩形之间的矩形的高度都比他们大时可以用一张海报。
否则增加一张海报。
我们维护一个单调增栈,那么栈中的每一个元素左边的第一个元素就是第一个小于或者是等于当前元素的元素。判断是否相等,不相等就必须为当前
矩形增加一个海报。
【code】
#include<iostream> #include<cstdio> using namespace std; #define N 250005 int n,top,ans,l,h; int sta[N]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&l,&h); while(top&&sta[top]>h)top--; sta[++top]=h; if(sta[top-1]!=sta[top])ans++; } printf("%d",ans); return 0; }
标签:over return 判断 images namespace std img 矩形 can
原文地址:http://www.cnblogs.com/zzyh/p/6852569.html