描述

话说这日,李逍遥与阿奴正欲前往桃花源拿寿葫芦,突然电闪雷鸣,天降暴雨,弄得两人措手不及,只得到附近的树洞避雨。

"哎,大理不是本应旱灾的吗?怎么会突降暴雨呢?"李逍遥嘀咕道。

"大概程序又出bug了吧。"阿奴回答到。(瀑布汗,这绝对是盗版的仙剑)
"这应该是100年来降雨最多的一次了!"李逍遥感叹。

"不对。事实上,93年前,从年初到一年的这个时候为止,下的雨是今年的五倍。"
"哦",李逍遥想了想了,"这么说,这是93年中气候最差的一年。"
"还是不对,这其实是23年来气候最糟糕的。"阿奴又一次打断他的话。

……………………………………………………………………………………
他们就这样讨论了很长很长时间。

亲爱的OIers,他们不在乎,你们是在乎的,不是吗?

若已知大理历史上不同年份的降雨量,现有一系列以"X年是自Y年以来雨量最多的年份"形式给出的陈述,你的任务就是判断这些陈述是正确,可能正确,还是错误的。

若一个陈述满足下列情况,我们就说它是正确的:
·X年和Y年以及这两年间的任意年份的降雨量都是已知的。

·X年的降雨量最多不得超过Y年。

·对任意年份Z满足Y<Z<X,降雨量都比X年的少。

当我们用降雨量给年份赋值,却缺少必要的信息来使这个陈述正确,我们说这个陈述可能正确。其他情况下这个陈述是错误的。

格式

输入格式

第一行是一个整数n,表示已知信息中的所含的年份数目。接下来的n行表示每个年份的降雨信息。其中第i行包含两个整数yi,ri(-10^9 <= yi <= 10^9,0 <= ri <= 10^9),表示第yi年的降雨量为ri毫升(注意每年的降雨量可以是一个任意的非负整数,上述范围仅仅是输入信息中数据的范围)。数据保证yi < yi+1 (1 <= i < n)。

第二部分首先是一个整数m,表示判断的陈述的数目。接下来的m行每行有两个整数Y,X(-10^9 <= Y < X <= 10^9),意义如上所述。

输出格式

输出应该包含m行,对应于m个询问。如果陈述为正确的则输出"true"(不含引号,下同),为假则输出"false",可能为真可能为假则输出"maybe"。

样例1

样例输入1[复制]

 
4
2002 4920
2003 5901
2004 2832
2005 3890
2
2002 2005
2003 2005

样例输出1[复制]

 
false
true

样例2

样例输入2[复制]

 
3
1985 5782
1995 3048
2005 4890
2
1985 2005
2005 2015

样例输出2[复制]

 
maybe
maybe

限制

1s

提示

40%的输入数据满足 n<=50,m<=10
80%的输入数据满足 n<=5000,m<=1000
100%的输入数据满足 n<=50000,m<=10000

来源

经典问题

1591346 ksq2013 1067 Accepted 2196 kb 128 ms C++/Edit 1287 B 2016-08-14 21:57:55

受教了!

第一次学zkw线段树(不可谓短小精悍),按标程一步步写的。参考博客:http://www.cnblogs.com/ccz181078/p/5468357.html

lower_bound()或upper_bound()返回值见博客:http://blog.csdn.net/niushuai666/article/details/6734403

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
static int M=65536;
int n,q,x[50001],y[50001],mx[131072];
inline int read()
{
int x=0,c=getchar(),f=1;
while(c>57||c<48){if(c=='-')f=-1;c=getchar();}
while(c>47&&c<58)x=x*10+c-48,c=getchar();
return x*f;
}
inline int query(int l,int r)
{
int sum=-inf;
for(l+=M+1,r+=M+3;l^r^1;l>>=1,r>>=1){
if(~l&1)sum=max(sum,mx[l^1]);
if(r&1)sum=max(sum,mx[r^1]);
}
return sum;
}
int main()
{
n=read();
while(n*2+10<M/2)M>>=1;
for(int i=0;i<n;i++)
x[i]=read(),y[i]=read();
x[n]=inf;
for(int i=0;i<n;i++)
mx[i+M+2]=y[i];
for(int i=M-1;i;i--){
int l=i<<1,r=l^1;
mx[i]=max(mx[l],mx[r]);
}
q=read();
while(q--){
int a=read(),b=read();
int l=lower_bound(x,x+n,a)-x;
int r=upper_bound(x,x+n,b)-x-1;
if(a>b){puts("false");continue;}
bool lk=x[l]==a,rk=x[r]==b;
int Mx=query(l+lk,r-rk);
if(lk&&Mx>=y[l]||rk&&Mx>=y[r]||lk&&rk&&y[l]<y[r])
{puts("false");continue;}
if(r-l==b-a&&lk&&rk&&y[l]>=y[r])
{puts("true");continue;}
puts("maybe");
}
return 0;
}

bzoj1067 降雨量&&vijos1265 暴风雨的更多相关文章

  1. BZOJ-1067 降雨量 线段树+分类讨论

    这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...

  2. bzoj1067 降雨量

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

  3. bzoj1067降雨量

    True和False都好搞 Maybe的情况: 1.Y年和X年的降雨量已知,X年的降雨量不超过Y年的降雨量,从Y+1到X-1年中存在至少一年的降雨量未知,从Y+1到X-1年中已知的降雨量都小于X年的降 ...

  4. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

  5. [BZOJ1067][SCOI2007]降雨量

    [BZOJ1067][SCOI2007]降雨量 试题描述 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格 ...

  6. 【BZOJ1067】[SCOI2007]降雨量 RMQ+特判

    [BZOJ1067][SCOI2007]降雨量 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年 ...

  7. 【BZOJ1067】【POJ2637】降雨量

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

  8. BZOJ1067 [SCOI2007]降雨量 线段树

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1067 题意概括 给定n组整数对(Xi,Yi),当Xi<Xj且Yi>=Yj时,如果对于任 ...

  9. 【BZOJ1067】【SCOI2007】降雨量

    新人求助,降雨量那题,本机AC提交AC 原题: 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例 ...

随机推荐

  1. VMware: XXX is still busy. Please wait until the operation is complete before closing

      在使用vmware的过程中发现创建快照.恢复快照.管理快照等功能突然都变成灰色的,用不了.更觉得夸张的是仅仅剩下关闭虚机按钮是红色的.心想估计是虚机快照没处理完之类的问题导致的,于是想想关闭虚机重 ...

  2. 【ios】使用Block对POST异步操作的简单封装

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3409721.html 一般情况下的POST异步操作需要实现以下 ...

  3. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  4. Android 友盟分享躺过的几个坑,大坑,坑爹啊

    前言:公司上线了一个项目,做Android 客户端集成友盟分享,在做得过程中,遇到了下面3个问题,希望其他小伙伴注意. ) 错误1: 1.错误描述 我是照着友盟的集成文档一步一步的集成的,做完后,发现 ...

  5. Android draw9patch 图片制作与使用

    理解一下4句话: 上边 决定左右拉升不变形 左边 决定上下拉升不变形 右边 设置内容高度区域 下边 设置内容宽度区域 下面我拿张图片分别举例说明: 1.QQ多彩气泡 聊天对话框也用.9图片制作 继承过 ...

  6. Oc中的数组

    ========================== 数组 ========================== 一.认识数组 oc中可以把NSObject对象的子类放到数组这个集合中,但是int.f ...

  7. jquery操作select(取值,设置选中)

    最近工作中总出现select 和 option问题,整理一下,内容大部分源于网络资料 一.基础取值问题 例如<select class="selector"></ ...

  8. git操作之常见问题解决方案

    一.版本不一致 1. 错误信息: > git push -u origin master To ******.git ! [rejected] master -> master (non- ...

  9. Oracle 外连接和 (+)号的用法

    对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍.1. LEFT OUTER JOIN:左外关联 SELEC ...

  10. Enabling Cross-Origin Requests in ASP.NET Web API 2

    Introduction This tutorial demonstrates CORS support in ASP.NET Web API. We’ll start by creating two ...