1067. [SCOI2007]降雨量【线段树】
Description
我们常常会说这样的话:“X年是自Y年以来降雨量最多的”。它的含义是X年的降雨量不超过Y年,且对于任意
Y<Z<X,Z年的降雨量严格小于X年。例如2002,2003,2004和2005年的降雨量分别为4920,5901,2832和3890,
则可以说“2005年是自2003年以来最多的”,但不能说“2005年是自2002年以来最多的”由于有些年份的降雨量未
知,有的说法是可能正确也可以不正确的。
Input
输入仅一行包含一个正整数n,为已知的数据。以下n行每行两个整数yi和ri,为年份和降雨量,按照年份从小
到大排列,即yi<yi+1。下一行包含一个正整数m,为询问的次数。以下m行每行包含两个数Y和X,即询问“X年是
自Y年以来降雨量最多的。”这句话是必真、必假还是“有可能”。
Output
对于每一个询问,输出true,false或者maybe。
Sample Input
2002 4920
2003 5901
2004 2832
2005 3890
2007 5609
2008 3024
5
2002 2005
2003 2005
2002 2007
2003 2007
2005 2008
Sample Output
true
false
maybe
false
HINT
100%的数据满足:1<=n<=50000, 1<=m<=10000, -10^9<=yi<=10^9, 1<=ri<=10^9
非常水的一道题……无非就是查询一下区间最大值然后离散化一下
注意分类讨论就好
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N (100000+100)
using namespace std; int a[N],b[N],Segt[N*],n,m,x,y; int getid(int x)
{
return lower_bound(a+,a+n+,x)-a;
} void Update(int node,int l,int r,int l1,int r1,int k)
{
if (r1<l || l1>r) return;
if (l1<=l&&r<=r1)
{
Segt[node]=k;
return;
}
int mid=(l+r)/;
Update(node*,l,mid,l1,r1,k);
Update(node*+,mid+,r,l1,r1,k);
Segt[node]=max(Segt[node*],Segt[node*+]);
} int Query(int node,int l,int r,int l1,int r1)
{
if (r1<l || l1>r) return -0x7fffffff;
if (l1<=l&&r<=r1)
return Segt[node];
int mid=(l+r)/;
return max(Query(node*,l,mid,l1,r1),
Query(node*+,mid+,r,l1,r1));
} int main()
{
scanf("%d",&n);
for (int i=; i<=n; ++i)
{
scanf("%d%d",&a[i],&b[i]);
Update(,,n,i,i,b[i]);
}
scanf("%d",&m);
for (int i=; i<=m; ++i)
{
scanf("%d%d",&x,&y);
int idx=getid(x),idy=getid(y);
if (a[idx]==x && a[idy]==y)//如果询问的左右端点都已知
{
int maxn=Query(,,n,idx+,idy-);
if (b[idx]<b[idy] || maxn>=b[idy]) printf("false\n");
else if (y-x!=idy-idx) printf("maybe\n");
else printf("true\n");
}
if (a[idx]!=x && a[idy]!=y)//询问的左右端点都未知
printf("maybe\n");
if (a[idx]==x && a[idy]!=y)//询问的右端点未知
{
if (a[idy]<y) idy++;
int maxn=Query(,,n,idx+,idy-);
if (maxn>=b[idx]) printf("false\n");
else printf("maybe\n");
}
if (a[idx]!=x && a[idy]==y)//询问的左端点未知
{
if (a[idx]>x) idx--;
int maxn=Query(,,n,idx+,idy-);
if (maxn>=b[idy]) printf("false\n");
else printf("maybe\n");
}
}
}
1067. [SCOI2007]降雨量【线段树】的更多相关文章
- BZOJ1067&P2471 [SCOI2007]降雨量[线段树裸题+细节注意]
dlntqlwsl 很裸的一道线段树题,被硬生生刷成了紫题..可能因为细节问题吧,我也栽了一次WA50分.不过这个隐藏条件真的对本菜鸡来说不易发现啊. 未知的年份连续的就看成一个就好了,把年份都离散化 ...
- [SCOI2007]降雨量 线段树和区间最值(RMQ)问题
这道题是比较经典的 \(RMQ\) 问题,用线段树维护是比较简单好写的.比较难的部分是判断处理.如果没有想好直接打代码会调很久(没错就是我).怎么维护查询区间最大值我就不再这里赘述了,不懂线段树的 ...
- [bzoj1067][SCOI2007]降雨量——线段树+乱搞
题目大意 传送门 题解 我国古代有一句俗话. 骗分出奇迹,乱搞最神奇! 这句话在这道题上得到了鲜明的体现. 我的方法就是魔改版线段树,乱搞搞一下,首先借鉴了黄学长的建树方法,直接用一个节点维护年份的区 ...
- BZOJ1067 [SCOI2007]降雨量 线段树
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1067 题意概括 给定n组整数对(Xi,Yi),当Xi<Xj且Yi>=Yj时,如果对于任 ...
- BZOJ-1067 降雨量 线段树+分类讨论
这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...
- 1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2148 Solved: 554[Submit][Status] ...
- bzoj 1067: [SCOI2007]降雨量
题目链接: bzoj 1067: [SCOI2007]降雨量 题解: 很简单的一道题,但代码里有许多细节需要注意,切容易出错,调了三个小时OTZ 做一个st表维护区间最大值就 在获得年份在序列中的po ...
- bzoj 1067: [SCOI2007]降雨量 模擬
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2010 Solved: 503[Submit][Status] ...
- 1067: [SCOI2007]降雨量 - BZOJ
Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003,2 ...
- 洛谷 2471 BZOJ 1067 [SCOI2007]降雨量
[题解] 用线段树维护区间最大值(因为没有修改,St表也可以),然后由于x,y可能是降雨量未知的年份,需要进行分类讨论. #include<cstdio> #include<algo ...
随机推荐
- mvc手把手教你写excel导入[mvc+三层,没用EF]
实习狗的每天新知识日常 准备工作: 1.在项目中添加对NPOI的引用,NPOI下载地址:http://npoi.codeplex.com/releases/view/38113 2.NPOI学习系列教 ...
- C#图片验证码绘制
制作验证码.也可以画弧线之类..... //新建一个网站,在后台代码中引用一个using Stystem.Drawing的命名空间 Bitmap img = , ); //制作一个宽100,高50的画 ...
- php 在函数前面加个@的作用
@是错误控制运算符,用屏蔽错误提示比如:@mysql_connect() 不会出现Warning, 而原来mysql_connect 会在页面上访提示Warning.主要是高版本的php不在支持mys ...
- sublime text3 JS语法检测插件
首先ctrl+shift+P用包管理器安装sublimeLinter和sublimeLinter-jshint 前往node官网下载nodejs并安装 安装完node后打开命令行输入npm insta ...
- HTML中字体的垂直排列
1.源代码: <html> <head> </head> <body> <div style="font-size:18px;writi ...
- 【SSH网上商城项目实战11】查询和删除商品功能的实现
转自:https://blog.csdn.net/eson_15/article/details/51360804 在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做 ...
- Aizu2292 Common Palindromes
题意 我也不知道哪里来的OJ \(vjudge\) 上的 给定两个字符串 \(S,T\) ,询问 \((i,j,k,l)\) 这样的四元组个数 使得 \(S[i,j],T[k,l]\) 是相等的回文串 ...
- drupal7 转化 public:// 为实际url
file_create_url('public://xxx.png'); // 得到URL drupal_realpath('public://xxx.png'); // 得到系统路径(磁盘路径,如D ...
- Java内存模型(JMM)以及 垃圾回收机制 小结
内存模型: 内存模型描述了程序中各个变量(实例域.静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节,对象最终是存储在内存里面的,这点没有错,但是编译 ...
- TensorFlow-卷积
卷积: conv2d ( input, filter, strides, padding, use_cudnn_on_gpu=True, data_format='NHWC', name=No ...