• 洛谷——P1276 校门外的树(增强版)


    https://www.luogu.org/problem/show?pid=1276#sub

    题目描述

    校门外马路上本来从编号0到L,每一编号的位置都有1棵树。有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B);幸运的是还有植树者每次从编号C到D 中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种上树苗(记 1 C D,含C和D);问最终校门外留下的树苗多少棵?植树者种上又被砍掉的树苗有多少棵?

    输入输出格式

    输入格式:

    第一行L和N,表示校园外原来有L+1棵树,并有N次砍树或种树的操作。

    以下N行,砍树或植树的标记和范围,每行3个整数。

    L(1 <= L <= 10000)和 N(1 <= N <= 100)

    输出格式:

    共两行。第1行校门外留下的树苗数目,第2行种上又被拔掉的树苗数目。

    输入输出样例

    输入样例#1:
    10 3
    0 2 6
    1 1 8
    0 5 7
    输出样例#1:
    3
    2
    

    说明

    【数据范围】

    对于100%的数据0≤n,l≤10^9

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 const int N(10000+5);
     7 int s,big[N],small[N];
     8 int l,n,ans,cnt,lose;
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&l,&n);
    13     for(int i=0;i<=l;i++) big[i]++;
    14     for(int op,u,v;n--;)
    15     {
    16         scanf("%d%d%d",&op,&u,&v);
    17         if(op==0)
    18         {
    19             for(int i=u;i<=v;i++)
    20             {
    21                 if(big[i]>0) big[i]--;
    22                 else if(small[i]>0) s++,small[i]--;
    23             }
    24         }
    25         else
    26         {
    27             for(int i=u;i<=v;i++)
    28                 if(!big[i]&&!small[i])
    29                     cnt++,small[i]++;
    30         }
    31     }
    32     printf("%d
    %d",cnt-s,s);
    33     return 0;
    34 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    表单
    框架
    表格
    列表
    标签
    封装类(包装类)
    常见类 --Object
    日志
    异常
    选择结构
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7204308.html
Copyright © 2020-2023  润新知