zoukankan      html  css  js  c++  java
  • Codevs1299 切水果

    题目描述 Description

    简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量

    数据已重新装配,不会出现OLE错误

    时限和数据范围适当修改,避免数据包过大而浪费空间资源

    输入描述 Input Description

    第1行共包括2个正整数,分别为N,M。

    接下来m行每行两个正整数L,R 

    输出描述 Output Description

    一共输出M行,每行输出切完之后剩下水果数量

    样例输入 Sample Input

    10 3

    3 5

    2 8

    1 5

    样例输出 Sample Output

    7

    3

    2

    数据范围及提示 Data Size & Hint

    30%的数据满足N,M<=5,000

    60%的数据满足N,M<=100,000

    100% 的数据满足1<=L<=R<=N<=500,000,1<=M<=500,000

    线段树基本操作练习。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #define ls l,mid,rt<<1
     6 #define rs mid+1,r,rt<<1|1
     7 using namespace std;
     8 const int mxn=800000;
     9 struct node{
    10     int sum;
    11     bool dec;
    12 }t[mxn*4];
    13 int n,m;
    14 void Build(int l,int r,int rt){//建树 
    15     if(l==r){t[rt].sum=1;return;}
    16     int mid=(l+r)>>1;
    17     Build(ls);Build(rs);
    18     t[rt].sum=t[rt<<1].sum+t[rt<<1|1].sum;
    19     return;
    20 }
    21 void cut(int L,int R,int l,int r,int rt){//区间清零 
    22     if(t[rt].dec){
    23 //        t[rt].dec=0;//这步加上话会WA,有些奇怪 
    24         t[rt].sum=0;
    25         t[rt<<1].dec=t[rt<<1|1].dec=1;
    26         return;
    27     }
    28     if(L<=l && r<=R){
    29         t[rt].sum=0;t[rt].dec=1;return;
    30     }
    31     int mid=(l+r)>>1;
    32     if(L<=mid)cut(L,R,ls);
    33     if(R>mid)cut(L,R,rs);
    34     t[rt].sum=t[rt<<1].sum+t[rt<<1 |1].sum;
    35     return;
    36 }
    37 int main(){
    38     scanf("%d%d",&n,&m);
    39     int i,j;
    40     Build(1,n,1);
    41     int x,y;
    42     for(i=1;i<=m;i++){
    43         scanf("%d%d",&x,&y);
    44         cut(x,y,1,n,1);
    45         printf("%d
    ",t[1].sum);
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    Docker启动ubuntu容器中使用sudo后报错,bash: sudo: command not found
    Redis持久化rdb&aof
    Python3中copy模块常用功能及其他几种copy方式比较
    学习笔记:tkinter模块常用参数(python3)
    Python核心编程第二版(中文).pdf 目录整理
    11、487-3279
    10、Crashing Balloon
    9、Exponentiation
    8、Fire Net
    7、Reverse Root
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5651629.html
Copyright © 2011-2022 走看看