【bzoj1067】降雨量
来源:互联网 发布:网络暴力漫画 编辑:程序博客网 时间:2024/06/07 00:04
#include<iostream>#include<cstdio>using namespace std;struct data{int ly,ry,mx,know;}tr[200001];int n,m;void build(int k,int l,int r){ if(l==r){scanf("%d%d",&tr[k].ly,&tr[k].mx);tr[k].ry=tr[k].ly;tr[k].know=1;return;} int mid=(l+r)>>1; build(k<<1,l,mid);build(k<<1|1,mid+1,r); tr[k].know=(tr[k<<1].know&&tr[k<<1|1].know); if(tr[k<<1].ry+1!=tr[k<<1|1].ly)tr[k].know=0; tr[k].ly=tr[k<<1].ly;tr[k].ry=tr[k<<1|1].ry; tr[k].mx=max(tr[k<<1].mx,tr[k<<1|1].mx); }int get(int k,int x){ if(tr[k].ly==tr[k].ry) { if(tr[k].ly!=x)return 0; else return tr[k].mx; } if(x<=tr[k<<1].ry)return get(k<<1,x); else if(x>=tr[k<<1|1].ly)return get(k<<1|1,x); return 0;}int ask(int k,int x,int y,int num){ bool f=0; if(x<tr[k].ly){f=1;x=tr[k].ly;} if(tr[k].ly==x&&tr[k].ry==y) { if(tr[k].mx>=num)return 0; else if(tr[k].know&&!f)return 1; else return 2; } if(y<=tr[k<<1].ry) { return ask(k<<1,x,y,num); } else if(x>=tr[k<<1|1].ly) { return ask(k<<1|1,x,y,num); } else { int t1=ask(k<<1,x,tr[k<<1].ry,num); int t2=ask(k<<1|1,tr[k<<1|1].ly,y,num); if(!t1||!t2)return 0; else if(tr[k<<1].ry+1!=tr[k<<1|1].ly)return 2; else return 1; } }int getnext(int k,int x){ int l=tr[k].ly,r=tr[k].ry; if(l==r)return tr[k].ly; if(x<tr[k<<1].ry)return getnext(k<<1,x); else return getnext(k<<1|1,x);}int getlast(int k,int x){ int l=tr[k].ly,r=tr[k].ry; if(l==r)return tr[k].ly; if(x>tr[k<<1|1].ly)return getlast(k<<1|1,x); else return getlast(k<<1,x);} int main(){ scanf("%d",&n); build(1,1,n); scanf("%d",&m); for(int i=1;i<=m;i++) { int l,r; scanf("%d%d",&l,&r); if(r<l){printf("false\n");continue;} int lnum=get(1,l),rnum=get(1,r); if(!lnum&&!rnum)printf("maybe\n"); else { int s=getnext(1,l),t=getlast(1,r); if(!lnum) { if(s>t||r==t){printf("maybe\n");continue;} int f=ask(1,s,t,rnum); if(f==0)printf("false\n"); else printf("maybe\n"); } else if(!rnum) { if(s>t||l==s){printf("maybe\n");continue;} int f=ask(1,s,t,lnum); if(f==0)printf("false\n"); else printf("maybe\n"); } else { if(rnum>lnum){printf("false\n");continue;} if(s>t){ if(l+1==r) printf("true\n"); else printf("maybe\n"); continue; } int f=ask(1,s,t,rnum); if(f==0)printf("false\n"); else if(f==1) { if(l+1==s&&r-1==t)printf("true\n"); else printf("maybe\n"); } else if(ask(1,s,t,rnum)==2)printf("maybe\n"); else printf("false\n"); } } } return 0;}
0 0
- 【bzoj1067】降雨量
- BZOJ1067降雨量
- bzoj1067: [SCOI2007]降雨量
- 【SCOI2007】【BZOJ1067】降雨量
- [BZOJ1067][SCOI2007]降雨量
- bzoj1067 降雨量&&vijos1265 暴风雨
- 【bzoj1067】[SCOI2007]降雨量
- 【bzoj1067】[SCOI2007]降雨量
- BZOJ1067[SCOI2007]降雨量
- 【bzoj1067】[SCOI2007]降雨量 (RMQ)
- BZOJ1067 [SCOI2007]降雨量
- BZOJ1067(SCOI2007)[降雨量]--RMQ
- bzoj1067 scoi2007 降雨量 RMQ+讨论
- BZOJ1067 [SCOI2007]降雨量 RMQ+乱搞
- BZOJ1067 [SCOI2007]降雨量/POJ2647 WorstWeather Ever
- [BZOJ1067][SCOI2007]降雨量(线段树)
- 【bzoj1067】【SCOI2007】【降雨量】【线段树+分类讨论】
- BZOJ1067: [SCOI2007]降雨量 (RMQ或者线段树)
- Geoserver样式(二)---实现了线样式
- 【poj3480】John
- UVa 639 - Don't Get Rooked 类皇后问题 递归回溯
- 构造Huffuman树的总费用
- PAT 1030. Travel Plan (30) (最短路)
- 【bzoj1067】降雨量
- 【wikioi1287】矩阵乘法
- 深圳SEO
- 作业
- 【poj3070】Fibonacci (矩阵乘法+快速幂)
- [Unity3D]上海某大型游戏公司的基础面试题
- 【wikioi1250】Fibonacci数列
- Geoserver样式(三)--实现了面样式
- 《游戏脚本的设计与开发》-(RPG部分)3.4 地图跳转