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
非常水的一道题……无非就是查询一下区间最大值然后离散化一下
注意分类讨论就好
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #define N (100000+100) 6 using namespace std; 7 8 int a[N],b[N],Segt[N*4],n,m,x,y; 9 10 int getid(int x) 11 { 12 return lower_bound(a+1,a+n+1,x)-a; 13 } 14 15 void Update(int node,int l,int r,int l1,int r1,int k) 16 { 17 if (r1<l || l1>r) return; 18 if (l1<=l&&r<=r1) 19 { 20 Segt[node]=k; 21 return; 22 } 23 int mid=(l+r)/2; 24 Update(node*2,l,mid,l1,r1,k); 25 Update(node*2+1,mid+1,r,l1,r1,k); 26 Segt[node]=max(Segt[node*2],Segt[node*2+1]); 27 } 28 29 int Query(int node,int l,int r,int l1,int r1) 30 { 31 if (r1<l || l1>r) return -0x7fffffff; 32 if (l1<=l&&r<=r1) 33 return Segt[node]; 34 int mid=(l+r)/2; 35 return max(Query(node*2,l,mid,l1,r1), 36 Query(node*2+1,mid+1,r,l1,r1)); 37 } 38 39 int main() 40 { 41 scanf("%d",&n); 42 for (int i=1; i<=n; ++i) 43 { 44 scanf("%d%d",&a[i],&b[i]); 45 Update(1,1,n,i,i,b[i]); 46 } 47 scanf("%d",&m); 48 for (int i=1; i<=m; ++i) 49 { 50 scanf("%d%d",&x,&y); 51 int idx=getid(x),idy=getid(y); 52 if (a[idx]==x && a[idy]==y)//如果询问的左右端点都已知 53 { 54 int maxn=Query(1,1,n,idx+1,idy-1); 55 if (b[idx]<b[idy] || maxn>=b[idy]) printf("false\n"); 56 else if (y-x!=idy-idx) printf("maybe\n"); 57 else printf("true\n"); 58 } 59 if (a[idx]!=x && a[idy]!=y)//询问的左右端点都未知 60 printf("maybe\n"); 61 if (a[idx]==x && a[idy]!=y)//询问的右端点未知 62 { 63 if (a[idy]<y) idy++; 64 int maxn=Query(1,1,n,idx+1,idy-1); 65 if (maxn>=b[idx]) printf("false\n"); 66 else printf("maybe\n"); 67 } 68 if (a[idx]!=x && a[idy]==y)//询问的左端点未知 69 { 70 if (a[idx]>x) idx--; 71 int maxn=Query(1,1,n,idx+1,idy-1); 72 if (maxn>=b[idy]) printf("false\n"); 73 else printf("maybe\n"); 74 } 75 } 76 }
转载于:https://www.cnblogs.com/refun/p/8682207.html
1067. [SCOI2007]降雨量【线段树】相关推荐
- [SCOI2007]降雨量 线段树和区间最值(RMQ)问题
题目链接P2471 [SCOI2007]降雨量 听说博客观看效果更佳 这道题是比较经典的 RMQRMQRMQ 问题,找到X和Y年间的最值来进行判断真假 , 用线段树维护是比较简单好写的.然而这只 ...
- P2471 [SCOI2007]降雨量(线段树)
题目描述 我们常常会说这样的话:"X 年是自 Y 年以来降雨量最多的".它的含义是 X 年的降雨量不超过 Y 年,且对于任意 Y<Z<X,Z 年的降雨量严格小于 X 年 ...
- BZOJ1067: [SCOI2007]降雨量(线段树)
题意:传送门 题解:这个题超级繁琐,参考传送门,传送门,我觉得本题的重点在于如何在线段树上加信息,使得中间漏掉的年份得以知道,有两种方法,通过维护区间和,提前建树时将不相邻年份设为0,还有一种方法是加 ...
- 1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2148 Solved: 554 [Submit][Statu ...
- 1067: [SCOI2007]降雨量 - BZOJ
Description 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2 ...
- 【BZOJ】1067: [SCOI2007]降雨量(rmq+变态题)
http://www.lydsy.com/JudgeOnline/problem.php?id=1067 好不爽,弄了一个晚上. 好不爽. 还是照着别人程序拍着看的!!! 噗 这题很变态. 首先,我没 ...
- scoi2007降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 1096 Solved: 241 [Submit][Statu ...
- (线段树)洛谷 P2471 [SCOI2007]降雨量
原题地址 https://www.luogu.com.cn/problem/P2471 解题思路 准备 好像只有我维护了两棵线段树? 先定义一个 rain\textit{rain}rain 数组存放降 ...
- [BZOJ1067][SCOI2007]降雨量(线段树)
题目描述 传送门 题解 离线离散化, 声明的年份和查找的年份一起建线段树. 线段树维护一下区间最大值,两个点之间是否有没有声明的年份打标记. 判断比较吃屎. 我大的分了两种情况:一个是需要在线段树中查 ...
最新文章
- linux脚本 scp 管道,scp命令详解(全)
- rpmbuild - 构建 RPM 打包
- 192.168.8.1手机登陆_192.168.8.1登录入口
- Head First Design Pattern 读书笔记(4) 工厂模式
- Windows自动压缩rar以及根据日期删除脚本
- 机器学习- 吴恩达Andrew Ng Week6 知识总结 Machine Learning System Design
- C/C++利用netsh设置动态IP和静态IP
- 计算机营销专业毕业生自我评价,市场营销专业毕业生自我评价
- 【数据分析】销售案例——用户购买频次
- python3-欢乐斗牛-实战
- 【Vue】13.解决安卓手机上调出软键盘,屏幕背景被压缩的问题
- Linux第7章Gdk及Cairo基础,Linux第7章Gdk及Cairo基础概要1.ppt
- android 虚拟按键挡住布局,Android 虚拟按键遮住了页面内容解决办法
- python全角数字_python 半角全角的相互转换
- windows计算机锁屏的快捷键是什么,电脑锁屏快捷键是什么
- AbMole推荐:人源化单抗动物实验黄金指南 (上)
- GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别 以及虚拟键值
- Qt ip地址与子网掩码合法性校验
- CreateEvent()的参数说明
- java 字符串 数字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法...
热门文章
- python编程自学能学会吗-Python能自学成功吗?
- python官网下载好慢1001python官网下载好慢-Python|时间复杂度测试
- python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
- 小学生学python-小学生就学编程,就学Python,真的那么重要吗?
- python类中方法的执行顺序-Python中实例化class的执行顺序示例详解
- 界面 高炉系统_浅议工业互联网与传统计算机系统的关系
- git error(win下)
- LeetCode Minimum Depth of Binary Tree
- Python学习之路--函数
- Python3 的内置函数和闭包