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 我们常常 ...
随机推荐
- Android 环境变量设置
需要设置以下全局的环境变量 ANDROID_HOME: C:\Users\bellesun\AppData\Local\Android\sdk JAVA_HOME: C:\Program Files ...
- C编译器MinGW安装、下载及在notepad++中运行C程序
一.C编译器MinGW的下载及安装步骤 打开MinGW官网:http://www.mingw.org/ 图一 图二 图三 图四 图五 图六 系统中配置环境变量: 图七 验证是否安装成功: CMD中运行 ...
- bayes学习笔记
贝叶斯(BAYES)判别思想是根据先验概率求出后验概率,并依据后验概率分布作出统计推断.所谓先验概率,就是用概率来描述人们事先对所研究的对象的认识的程度:所谓后验概率,就是根据具体资料.先验概率.特定 ...
- 系统编程--标准IO
1.流和FILE对象 对于国际字符集,一个字符可以由一个以上的字节来表示.标准I/O文件流可以用来操作单字节和多字节(宽,wide)字符集.一个流的方向(orientation)决定了字符是以单字节还 ...
- Codeforces Round #326(Div2)
CodeForces 588A 题意:Duff喜欢吃肉,想在接下来的n天,每天都有Ai斤肉吃,但每一天肉的单价Pi不定,肉 可以保存不过期,现已知n天每天肉的斤数Ai,以及单价Pi,为了使每天都 ...
- 脚本,替换ipa里面的资源,并重新打包
今天逯同事说,可以把狂挂传奇打包的项目写成一个脚本,这样就不用担心证书有时不能用的问题了. 然后,像我这么好学的学生,当然要去执行了.(其实,以前他给的建议我都只是听听而已,这次是因为想学点东西了,所 ...
- 【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
原文地址:http://www.cnblogs.com/GXZlegend/p/6825389.html 题目描述 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一 ...
- hdu 2516 取石子游戏 (博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 淀粉质模板 Tree
Tree 题目描述 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 输入输出格式 输入格式: N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 ...
- 洛谷 P4883 mzf的考验 解题报告
P4883 mzf的考验 题目背景 \(mzf\)立志要成为一个豪杰,当然,他也是一个\(OIer\). 他希望自己除了会\(OI\)之外还会各种东西,比如心理学.吉他.把妹等等. 为了让自己有更大的 ...