NOIP2012提高组D2T2。

这道题目非常基础,正解貌似是二分+差分数组,在这里提供一种线段树的思路。

很容易发现题目让我们每次修改一段区间,然后我们只需要看每一个区间内有没有负数就可以了。可以用线段树维护每个区间内的最小值,修改的话就直接减就可以了,不要忘了标记下放(否则只有5分...)最后查看1-n内最小值是否为负数即可。

参考代码如下:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #define mid (l+r)/2
  6. #define lc k*2
  7. #define rc k*2+1
  8. using namespace std;
  9. int read()
  10. {
  11. int x=,f=;char ch=getchar();
  12. while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
  13. while(ch>=''&&ch<=''){x=(x<<)+(x<<)+(ch^);ch=getchar();}
  14. if(f)return x;return -x;
  15. }
  16. struct node
  17. {
  18. int l,r,tag,w;
  19. }tree[];
  20. int n,m,x,y,val,num;
  21. void pushup(int k){tree[k].w=min(tree[lc].w,tree[rc].w);}
  22. void build(int l,int r,int k)
  23. {
  24. tree[k].l=l;tree[k].r=r;
  25. if(l==r){tree[k].w=read();return;}
  26. build(l,mid,lc);build(mid+,r,rc);
  27. pushup(k);
  28. }
  29. void pushdown(int k)
  30. {
  31. tree[lc].tag+=tree[k].tag;tree[rc].tag+=tree[k].tag;
  32. tree[lc].w-=tree[k].tag;tree[rc].w-=tree[k].tag;
  33. tree[k].tag=;
  34. }
  35. void add(int k)
  36. {
  37. int l=tree[k].l,r=tree[k].r;
  38. if(l>=x&&r<=y)
  39. {
  40. tree[k].w-=val;
  41. tree[k].tag+=val;
  42. if(tree[k].w<)
  43. {
  44. cout<<-<<endl<<num<<endl;
  45. exit();
  46. }
  47. return;
  48. }
  49. if(tree[k].tag)pushdown(k);
  50. if(x<=mid)add(lc);
  51. if(y>mid)add(rc);
  52. pushup(k);
  53. }
  54. int main()
  55. {
  56. //freopen("classroom.in","r",stdin);
  57. //freopen("classroom.out","w",stdout);
  58. n=read();m=read();
  59. build(,n,);
  60. for(int i=;i<=m;i++)
  61. {
  62. num=i;val=read();x=read();y=read();
  63. add();
  64. }
  65. cout<<<<endl;
  66. //fclose(stdin);
  67. //fclose(stdout);
  68. return ;
  69. }

成功做完关于classroom的题目:NOIP2012D2T2借教室,NOIP2016D1T3换教室......

[NOIP2016]借教室的更多相关文章

  1. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  2. NOIP2012借教室[线段树|离线 差分 二分答案]

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自 ...

  3. [NOIP2012] 提高组 洛谷P1083 借教室

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...

  4. 借教室(codevs 1217)

    1217 借教室 2012年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descrip ...

  5. NOIp 2012 #2 借教室 Label:区间修改线段树

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...

  6. NOIP 2012 Day2T2 借教室题解

    NOIP 2012 Day2T2 借教室题解 题目传送门:http://codevs.cn/problem/1217/ 题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动 ...

  7. 【NOIP2012】借教室

    因为本校OJ+1s所以用线段树水过了,不去syz的水库水这题还真不知道线段树过不了= = 原题: 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的 ...

  8. NOIP 2012 T5 借教室 [洛谷P1083]

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自 ...

  9. NOIP2012 借教室

    描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样.面对海量租借教室的信息,我们自然希望编 ...

随机推荐

  1. iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别

    依旧本着尊重原创和劳动者的原则,将地址先贴在前面: http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html,作者Nonato 以下内 ...

  2. glibc2.22

                 

  3. 解析安装mysql

    大多数人在结束咱们前面学习的基础知识的时候,其实一脸懵逼,不过我们已经开始步入了另一个新的高度,针对基础知识还是必须巩固针对性的进行补充,可以分模块总结:比如基础知识的数据结构---->函数-- ...

  4. ubuntu移动分区,修改目录挂在点

    由于/tmp目录空间有点小,导致安装一个大软件的时候提示/tmp空间不足,最后通过创建新分区,并将新分区挂在到/tmp下,把/tmp空间扩大. 安装gparted 输入如下命令: sudo apt-g ...

  5. nodejs 文件读写

    文件读取: //例如: fs.readFile 就是用来读取文件的 //1. 使用require方法来加载 fs 核心模块 var fs = require('fs'); /* *2. 读取文件 * ...

  6. Linux性能优化从入门到实战:10 内存篇:如何利用Buffer和Cache优化程序的运行效率?

    缓存命中率   缓存命中率,是指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比,可以衡量缓存使用的好坏.命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好.   实际上,缓存是 ...

  7. bzoj 3569 DZY Loves Chinese II 随机算法 树上倍增

    题意:给你一个n个点m条边的图,有若干组询问,每次询问会选择图中的一些边删除,删除之后问此图是否联通?询问之间相互独立.此题强制在线. 思路:首先对于这张图随便求一颗生成树,对于每一条非树边,随机一个 ...

  8. [BZOJ2600] ricehub

    问题描述 乡间有一条笔直而长的路称为"米道".沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 ...

  9. Counter的数据统计功能

    Counter是dict的子类,一般用于统计,默认排序是从大到小 from collections import Counter # 输入iterable对象即可 str_counter = Coun ...

  10. 回归平方和 ESS,残差平方和 RSS,总体平方和 TSS

    https://zhidao.baidu.com/question/565190261749684764.html 回归平方和 ESS,残差平方和 RSS,总体平方和 TSS   总变差       ...