bzoj 1067: [SCOI2007]降雨量
题目链接:
题解:
很简单的一道题,但代码里有许多细节需要注意,切容易出错,调了三个小时OTZ
做一个st表维护区间最大值就
在获得年份在序列中的pos时二分
也可以维护平衡树查询pos
或者用直接用线段维护最大值同时维护区间中有多少年份
其次分情况讨论就好了
#include<cmath>
#include<cstdio>
#include<algorithm>
inline int read() {
int x=0,f=1;
char c=getchar() ;
while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}
while(c<='9'&&c>='0') x=x*10+c-'0',c=getchar();
return x*f;
}
const int maxn = 50007;
int a[maxn],b[maxn];int f[maxn][21],n;
void make_st() {
for(int i=1;i<=20;++i)
for(int j=1;j+(1<<i)-1<=n;++j)
f[j][i]=std::max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
}
int query(int l,int r) {
if (l>r)
return-0x7fffffff;
int q=log(r-l+1)/log(2);
return std::max(f[l][q],f[r-(1<<q)+1][q]);
}
int getpos(int f) {
int l=1,r=n,ret=0;
while(l<=r) {
int mid=l+r>>1;
if(a[mid]<=f)ret=mid,l=mid+1;
else r=mid-1;
}
return ret;
}
int main() {
n=read();
for(int i=1;i<=n;++i) {
a[i]=read(),b[i]=read();f[i][0]=b[i];
}
make_st();
int m=read() ;
for(int a1,b1;m--;) {
a1=read() ,b1=read();
int pa=getpos(a1),pb=getpos(b1);
if(a[pa]!=a1&&a[pb]!=b1) {puts("maybe");continue;}
if(a[pa]!=a1&&a[pb]==b1) {
if(query(pa+1,pb-1)<b[pb])puts("maybe");
else puts("false");continue;
}
if(a[pa]==a1&&a[pb]!=b1) {
if(query(pa+1,pb)<b[pa])puts("maybe");
else puts("false");continue;
}
if(pb-pa!=b1-a1) {
if(query(pa+1,pb-1)>=b[pb]||b[pb]>=b[pa]) puts("false");
else puts("maybe");continue;
}
if(query(pa+1,pb-1)<b[pb]&&b[pa]>b[pb]) puts("true");
else puts("false");
//printf("max(pa -> pb) : %d\n",query(pa+1,pb));
}
return 0;
}
bzoj 1067: [SCOI2007]降雨量的更多相关文章
- bzoj 1067: [SCOI2007]降雨量 模擬
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2010 Solved: 503[Submit][Status] ...
- bzoj 1067: [SCOI2007]降雨量 (离散化+线段树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1067 思路: 毒瘤题,写的自闭,改了一晚上,注意要理清题目的逻辑 x小于等于y,x,y之间的 ...
- 洛谷 2471 BZOJ 1067 [SCOI2007]降雨量
[题解] 用线段树维护区间最大值(因为没有修改,St表也可以),然后由于x,y可能是降雨量未知的年份,需要进行分类讨论. #include<cstdio> #include<algo ...
- 1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2148 Solved: 554[Submit][Status] ...
- 【BZOJ】1067: [SCOI2007]降雨量(rmq+变态题)
http://www.lydsy.com/JudgeOnline/problem.php?id=1067 好不爽,弄了一个晚上. 好不爽. 还是照着别人程序拍着看的!!! 噗 这题很变态. 首先,我没 ...
- 1067: [SCOI2007]降雨量 - BZOJ
Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003,2 ...
- 1067. [SCOI2007]降雨量【线段树】
Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003, ...
- BZOJ 1067 降雨量(RMQ-ST+有毒的分类讨论)
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 4399 Solved: 1182 [Submit][Stat ...
- BZOJ 1067 & Interval_Tree
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3099 Solved: 800 Description 我们常常 ...
随机推荐
- selenium + python之元素定位
selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种:通过id定位元素:find_element_by_id("id_vaule")通过name定位 ...
- XGBoost——机器学习--周振洋
XGBoost——机器学习(理论+图解+安装方法+python代码) 目录 一.集成算法思想 二.XGBoost基本思想 三.MacOS安装XGBoost 四.用python实现XGBoost算法 在 ...
- android自定义控件属性
有两种方法为自定义的控件设置属性 . 来自为知笔记(Wiz)
- 实用JS系列——事件类型
事件就是用户对窗口上各种组件的操作.JS中的事件中的事件即由访问Web页面的用户引起的一系列的操作.一般用于浏览器和用户操作进行交互,例如:用户的单击事件等. 类型分为: 内联模型.脚本模型和DOM2 ...
- 【bzoj2565】最长双回文串 Manacher+树状数组
原文地址:http://www.cnblogs.com/GXZlegend/p/6802558.html 题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc ...
- 【C++ 拾遗】C++'s most vexing parse
C++'s most vexing parse 是 Scott Meyers 在其名著<Effective STL>中创造的一个术语. Scott 用这个术语来形容 C++ 标准对于 de ...
- hihoCoder 1403 后缀数组一·重复旋律(后缀数组+单调队列)
#1403 : 后缀数组一·重复旋律 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成 ...
- [转]busybox登陆后没要求输入密码的解决办法
转自:http://blog.chinaunix.net/uid-8058395-id-65785.html 1.制作好ramdisk之后 通过串口进入系统 却发现系统直接登录进去了 并没有要求用ro ...
- 刷题总结——Interval query(hdu4343倍增+贪心)
题目: Problem Description This is a very simple question. There are N intervals in number axis, and M ...
- 让JS帮你决定午餐吃什么吧
最愁就是每天中午吃什么了,有空就做了个 JavaScript 轮播随机选择.会轮播预先自定义的菜单中,然后点选定的时候确定一款.代码可以查看本页源代码获得,你可以自定义修改菜单数组. 效果演示 准备选 ...