题目:
题解:
一个矩形最多需要一张纸,那么我们可以记录省纸的情况
矩形可以被前面比>=自己高度的家伙盖住,我们把>=高度的家伙加入单调栈
如果这个矩形比以前的矩形都要高,那ta成为史上最高成功入栈
如果这个矩形比以前的矩形矮,那以前矩形的那张纸并不会再创造价值,一定要自己用一张纸,就T出栈吧
如果这个矩形和以前的一样高,恭喜你们可以用一张纸啦
代码:
#include <cstdio>
using namespace std;
int stack[250005];
int main()
{
int n,i,ans=0,top=0;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
int x,y;scanf("%d%d",&y,&x);
while (x<=stack[top])
{
if (stack[top]==x) ans++;
top--;
}
stack[++top]=x;
}
printf("%d",n-ans);
}