题目链接:

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;
}

最新文章

  1. OD20
  2. android中的事件传递和处理机制
  3. 解决&#160;“fatal&#160;error&#160;C1083:&#160;”无法打开包括文件
  4. DIV背景半透明文字不半透明的样式
  5. Oracle DB 使用调度程序自动执行任务
  6. 重拾C,一天一点点_6
  7. 【转】使用JIRA搭建企业问题跟踪系统【个人推荐】
  8. Android 给应用定制皮肤
  9. Tomcat配置域名访问
  10. Blu-Ray BRRip 和 BDRip 的区别
  11. laravel跟jquery之间传输json数据
  12. python中pip的使用和安装
  13. JS字符串数字互转
  14. 前端的UI设计与交互之色彩篇
  15. DataTime显示格式【转】
  16. Python科学计算库
  17. 手动卸载的vs2010
  18. javascript根据身份证号判断精确周岁年龄
  19. Spring DI
  20. 使用Android编写录制视频小程序演示样例

热门文章

  1. SELECTORS模块实现并发简单版FTP
  2. JNDI和JDBC的区别和联系及其使用方法
  3. ironic baremetal rescue process
  4. 计算机图形学 opengl版本 第三版------胡事民 第三章更多的绘图工具
  5. Android 图片文字单位 px、dp、sp区别
  6. Python课程设计 搭建博客
  7. 软工实践Alpha冲刺(4/10)
  8. 01、JAVA开发准备
  9. 实用JS系列——BOM常用对象
  10. 【bzoj2238】Mst 最小生成树+树链剖分+线段树