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 我们常常 ...
随机推荐
- Oz 创建Windows2008R2镜像
此tdl和auto文件只可定义windows disk bus以ide模式启动,不支持virtio. <template> <name>Windows-gushiren< ...
- Python读取不同文件夹下的图片并且分类放到新创建的训练文件夹和标签文件夹
在深度学习的训练时,经常会碰到训练的样本数据集和标签数据集是在一个文件夹中,这个时候我们就不得不进行一些数据的预处理和文件的分类,例如将训练(training data)数据集和标签数据集(label ...
- NodeJS05
商品分类模块 分类model const mongoose = require('mongoose') const schema = new mongoose.Schema({ name: { typ ...
- 500 OOPS: vsftpd: refusing to run with writable anonymous root
500 OOPS: vsftpd: refusing to run with writable anonymous root 以下就是解决的三个步骤,其中第一步,是我一直没有搞明白的,也是其中的重点: ...
- 用Linkedhashmap的LRU特性及SoftReference软引用构建二级缓存
LRU: least recently used(近期最少使用算法).LinkedHashMap构造函数可以指定其迭代顺序:LinkedHashMap(int initialCapacity, flo ...
- java连接Oracle数据库实现增删改查并在Navicat中显示
创建TEST表 eclipse中的java项目 代码 数据库方法类 DBUtil: package util; import java.sql.Connection; import java.sql. ...
- Linux下磁盘管理
设置密码mkpasswdmkpasswd -s 0mkpasswd -s 0 -1 15 规定密码的长度 1. 查看磁盘或者目录的容量df 查看磁盘各分区使用情况 不加参数以k为单位 df -i in ...
- 【R】多元线性回归
R中的线性回归函数比较简单,就是lm(),比较复杂的是对线性模型的诊断和调整.这里结合Statistical Learning和杜克大学的Data Analysis and Statistical I ...
- 【bzoj3866】The Romantic Hero dp
题目描述 给你n个数,从中选出两个不相交非空集合S和T,使得S中的每一个元素都在T集合的前面,并且S集合中的所有数的亦或等于T集合中的所有数的与,求方案数 mod 10^9+7. 输入 The fir ...
- 块元素包裹img空隙问题
解决方法 1.img设为block2.img对齐方式vertical-align:bottom(middle/top),不是baseline就行3.父容器font-size:0或line-height ...