链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1067

思路: 毒瘤题,写的自闭,改了一晚上,注意要理清题目的逻辑 x小于等于y,x,y之间的数严格小于x,不能等于;

分类讨论懒得写的,很简单的分类讨论。

实现代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define lson l,m,rt<<1
  4. #define rson m+1,r,rt<<1|1
  5. #define mid int m = (l + r) >> 1
  6. const int M = 1e5+;
  7. const int inf = 0x3f3f3f3f;
  8. int vis[M];
  9. int num[M<<],sum[M<<],x1[M],x2[M],yy[M],y2[M],cnt,a[M<<];
  10. void pushup(int rt){
  11. sum[rt] = max(sum[rt<<],sum[rt<<|]);
  12. num[rt] = num[rt<<] + num[rt<<|];
  13. }
  14.  
  15. void update(int p,int c,int l,int r,int rt){
  16. if(l == r){
  17. sum[rt] = c;
  18. num[rt] = ;
  19. return ;
  20. }
  21. mid;
  22. if(p <= m) update(p,c,lson);
  23. else update(p,c,rson);
  24. pushup(rt);
  25. }
  26.  
  27. int query(int L,int R,int l,int r,int rt){
  28. if(L <= l&&R >= r){
  29. return sum[rt];
  30. }
  31. mid;
  32. int ret = -inf;
  33. if(L <= m) ret = max(ret,query(L,R,lson));
  34. if(R > m) ret = max(ret,query(L,R,rson));
  35. return ret;
  36. }
  37.  
  38. int ask(int L,int R,int l,int r,int rt){
  39. if(L <= l&&R >= r){
  40. return num[rt];
  41. }
  42. mid;
  43. int ret = ;
  44. if(L <= m) ret += ask(L,R,lson);
  45. if(R > m) ret += ask(L,R,rson);
  46. return ret;
  47. }
  48.  
  49. int main()
  50. {
  51. int n,x,y,m;
  52. scanf("%d",&n);
  53. int cnt = ;
  54. for(int i = ;i <= n;i ++){
  55. scanf("%d%d",&x1[i],&yy[i]);
  56. a[++cnt] = x1[i];
  57. }
  58. scanf("%d",&m);
  59. for(int i = ;i <= m;i ++){
  60. scanf("%d%d",&x2[i],&y2[i]);
  61. a[++cnt] = x2[i];
  62. a[++cnt] = y2[i];
  63. }
  64. sort(a+,a++cnt);
  65. int nn = unique(a+,a++cnt)-(a+);
  66. for(int i = ;i <= n;i ++){
  67. x = lower_bound(a+,a+nn+,x1[i]) - a;
  68. vis[x] = yy[i];
  69. update(x,yy[i],,nn,);
  70. }
  71. for(int i = ;i <= m;i ++){
  72. x = lower_bound(a+,a+nn+,x2[i]) - a;
  73. y = lower_bound(a+,a+nn+,y2[i]) - a;
  74. if(x > y){
  75. printf("false\n");
  76. continue;
  77. }
  78. if(!vis[x]&&!vis[y]) printf("maybe\n");
  79. else if(vis[x]&&vis[y]){
  80. int cnt = query(x+,y-,,nn,);
  81. int flag = ask(x,y,,nn,);
  82. if(cnt<vis[y]&&vis[y]<=vis[x]){
  83. if(flag == y2[i]-x2[i]+) printf("true\n");
  84. else printf("maybe\n");
  85. }
  86. else printf("false\n");
  87. }
  88. else if(!vis[x]&&vis[y]){
  89. int cnt = query(x,y-,,nn,);
  90. if(cnt >= vis[y]) printf("false\n");
  91. else printf("maybe\n");
  92. }
  93. else{
  94. int cnt = query(x+,y,,nn,);
  95. if(cnt >= vis[x]) printf("false\n");
  96. else printf("maybe\n");
  97. }
  98. }
  99. return ;
  100. }

bzoj 1067: [SCOI2007]降雨量 (离散化+线段树)的更多相关文章

  1. 1067. [SCOI2007]降雨量【线段树】

    Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003, ...

  2. bzoj 1067: [SCOI2007]降雨量

    题目链接: bzoj 1067: [SCOI2007]降雨量 题解: 很简单的一道题,但代码里有许多细节需要注意,切容易出错,调了三个小时OTZ 做一个st表维护区间最大值就 在获得年份在序列中的po ...

  3. bzoj 1067: [SCOI2007]降雨量 模擬

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2010  Solved: 503[Submit][Status] ...

  4. 洛谷 2471 BZOJ 1067 [SCOI2007]降雨量

    [题解] 用线段树维护区间最大值(因为没有修改,St表也可以),然后由于x,y可能是降雨量未知的年份,需要进行分类讨论. #include<cstdio> #include<algo ...

  5. bzoj1067——SCOI2007降雨量(线段树,细节题)

    题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...

  6. 1067: [SCOI2007]降雨量

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2148  Solved: 554[Submit][Status] ...

  7. 南阳理工 题目9:posters(离散化+线段树)

    posters 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 The citizens of Bytetown, AB, could not stand that ...

  8. SGU 180 Inversions(离散化 + 线段树求逆序对)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...

  9. 【POJ】2528 Mayor's posters ——离散化+线段树

    Mayor's posters Time Limit: 1000MS    Memory Limit: 65536K   Description The citizens of Bytetown, A ...

随机推荐

  1. make太慢了,加快编译速度的方法 make -j

    make -j 既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了. 用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最 ...

  2. python爬虫随笔-scrapy框架(1)——scrapy框架的安装和结构介绍

    scrapy框架简介 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...

  3. BZOJ1283 序列 网络流区间覆盖模型

    就是区间覆盖模型的费用流版. 区间覆盖模型

  4. matplotlib 入门之The Lifecycle of a plot

    文章目录 Note 数据 准备开始 操控风格 我错了!!! 定制图像 特别注意!!! figsize=(width, height)!!! 格式化标签 组合多个可视化对象? 保存你的图片 matplo ...

  5. JS 深拷贝和浅拷贝概念,以及实现深拷贝的三种方式

    一.理解堆栈,基本数据类型与引用数据类型 1.堆栈 栈(stack):系统自动分配的内存空间,内存会由系统自动释放,用来存放函数的参数值,局部变量的值等,特点是先进后出. 堆(heap):系统动态分配 ...

  6. 543A - Writing Code(二维动态规划)

    题意:现在要写m行代码,总共有n个文件,现在给出第i个文件每行会出现v[i]个bug,问你在bug少于b的条件下有多少种安排 分析:定义dp[i][j][k],i个文件,用了j行代码,有k个bug 状 ...

  7. Django之在Python中调用Django环境

    Django之在Python中调用Django环境 新建一个py文件,在其中写下如下代码: import os if __name__ == '__main__': os.environ.setdef ...

  8. 福州大学软件工程1816 | W班 团队Alpha阶段成绩汇总排名(第9、10次作业)

    写在前面 汇总成绩排名链接 1.作业链接 第九次作业--项目Alpha冲刺(团队) 第十次作业--事后诸葛亮(团队) 2.评分准则 本次作业包括现场Alpha答辩评分(映射总分为100分)+博客分(总 ...

  9. mysql-SQL Error: 1205, SQLState: 41000

    mysql-SQL Error: 1205, SQLState: 41000——CSDN问答频道https://ask.csdn.net/questions/176492 mysql-SQL Erro ...

  10. 关于spring的源码的理解

    从最基础的Hello World开始. spring的Hello World就三行代码: public void test() { ApplicationContext context = new C ...