• 1113: [Poi2008]海报PLA


    1113: [Poi2008]海报PLA

    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 765  Solved: 466
    [Submit][Status][Discuss]

    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

    HINT

     

    Source

    题解:一个萌萌哒单调栈,详解如下吧(显然,宽度啥的不知道作用在哪里= =,鸣谢 ZYF-ZYF神犇,祝RP++,虐场++)

    题解:

    ans最多等于n,那么什么情况下ans可以减小呢

    首先如果减少了,肯定是贴了一张海报,覆盖住两张高度相同的矩形(宽度是打酱油的。。。)

    那么就如果 h[i]=h[j] 那么就得保证 i 与 j 之间没有 比它们高度更小的了

    咦?想到了什么,对了,单调栈!维护一个单调递减栈,当该元素=栈顶元素时ans--,并将栈顶元素弹栈

     1 /**************************************************************
     2     Problem: 1113
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:3884 ms
     7     Memory:8040 kb
     8 ****************************************************************/
     9  
    10 var
    11    i,k,l,m,n:longint;j:int64;
    12    a:array[0..1000005] of int64;
    13 begin
    14      readln(n);l:=n;k:=0;
    15      for i:=1 to n do
    16          begin
    17               readln(j,j);
    18               while j<=a[k] do
    19                     begin
    20                          if j=a[k] then dec(l);
    21                          dec(k);
    22                     end;
    23               inc(k);a[k]:=j;
    24          end;
    25      writeln(l);
    26 end.
  • 相关阅读:
    数据库课程设计_购书管理系统代码(sql_c#及sql_java)
    你离不开的数组
    getchar的用法
    字母大小写转化
    C语言乘除颠覆你的世界观
    循环的执行过程、适用情况和常见错误
    斐波那契数和数小方块的类型题分析方法
    C语言刷题需要注意的地方
    函数那些事
    逻辑与、或、非的使用方法
  • 原文地址:https://www.cnblogs.com/HansBug/p/4474468.html
Copyright © 2020-2023  润新知