• 校门外的树4


    校门外的树4
    题目描述
    某校大门外长度为L 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米。我们可
    以把马路看成一个数轴,马路的一端在数轴1 的位置,另一端在L 的位置;数轴上的每个整
    数点,即1,2,……,L,都种有一棵树。
    由于学校要盖楼。所以要将一些比较高的树砍下来当木材。学校想知道砍下某些树之后,
    还剩下多少段连续树的树木。
    比如马路的长度是5,那么1,2,3,4,5 处各有一颗树。他们的高度分别是2,7,3,5,1。现在
    学校想砍掉最高的1 颗树。那么,就会剩下2 段树木,一段是从下标1 开始到下标1 结束的
    树,另一段是从下标为3 开始到下标为5 结束的树。
    输入格式
    输入的第一行有两个整数L(1 <= L <= 106)和M(1 <= M <= 105),L 代表马路的长度,
    M 代表总共砍M 次树。
    第二行包含L 个不相同的正整数,为树木的高度h(0< h < 108)。
    第三行包含M 个正整数k[i],表示学校想砍掉最高的k[i]颗树(0 < k[i] < 105)。
    保证树木不会被砍光
    输出格式
    总共输出M 行,学校每次砍完一次树(k 颗),输出一个数字,这个数字占一行,表示剩
    下多少段树。
    样例输入
    5 2
    2 7 3 5 1
    1 1
    样例输出
    2
    3
    提示
    成吨的输入量,请进行IO 优化。
    本题时间限制3 秒

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 using namespace std;
     6 int i,j,m,n,l,da = 1,vis[1000005],op,t = 0;
     7 struct node
     8 {
     9     int h;
    10     int x;
    11 }a[1000005];
    12 int cmp(node a,node b)
    13 {
    14     return a.h > b.h;
    15 }
    16 int main()
    17 {
    18     scanf("%d %d",&l,&m);
    19     for(i = 1;i <= l;i++)
    20     {
    21         vis[i] = 1;
    22         scanf("%d",&a[i].h);
    23         a[i].x = i;
    24     }
    25     sort(a + 1,a + 1 +l,cmp);
    26     for(i = 1;i <= m;i++)
    27     {
    28         scanf("%d",&op);
    29         for(j = op;j >= 1;j--)
    30         {
    31             t = t + 1;
    32             a[t].h = 0;
    33             if(vis[a[t].x - 1] == 1 && vis[a[t].x + 1] == 1)
    34             da++;
    35             else if(vis[a[t].x - 1] != 1 && vis[a[t].x + 1] != 1)
    36             da--;
    37             vis[a[t].x] = 0;
    38         }
    39         printf("%d",da);
    40         if(i != m)
    41         printf("
    ");
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    Exp1 PC平台逆向破解(5)M
    嵌入式C语言——提取时分秒
    2017-2018-1 20155329 《信息安全系统设计基础》第15周课程总结
    课上内容
    2017-2018-1 20155329 《信息安全系统设计基础》第14周学习总结
    week14课上测试
    2017-2018-1 20155328 《信息安全系统设计基础》第7周学习总结
    2017-2018-1 20155328 20155333 实验二 固件程序设计 实验报告
    20155328 《信息安全系统设计基础》第六周 课堂提交补充
    2017-2018-1 20155328《信息安全系统设计基础》第6周学习总结
  • 原文地址:https://www.cnblogs.com/rax-/p/9799779.html
Copyright © 2020-2023  润新知