HYSBZ 1067 RMQ
来源:互联网 发布:windows arp命令事例 编辑:程序博客网 时间:2024/06/05 09:37
题意很清楚,坑点就是l或是r不存在时,要二分去找临近位置,然后统计这之间的max。
#include <iostream>#include <cstdio>#include <cstdlib>#include <map>#include <cstring>#include <set>#include <algorithm>using namespace std;const int maxn=2e5;map<int,int> mp;/*数组下标从1到n,询问[l,r]最小值*/int a[maxn];int b[maxn];int dp2[maxn][32];void ini(int n){ for(int i=1;i<=n;i++)dp2[i][0]=a[i]; for(int j=1;j<30;j++){ for(int i=n;i>=1;i--){ if(i+(1<<j-1)<=n) dp2[i][j]=max(dp2[i][j-1],dp2[i+(1<<j-1)][j-1]); } }}inline int rmq2(int l,int r){ int k=0; while(1<<k+1<=r-l+1)k++; return max(dp2[l][k],dp2[r-(1<<k)+1][k]);}int sol(int l,int r){ if(l>r)return -1; return rmq2(l,r);}int main(){ int n,m; while(~scanf("%d",&n)){ mp.clear(); for(int i=1;i<=n;i++){ scanf("%d",&b[i]); mp[b[i]]=i; scanf("%d",&a[i]); } ini(n); scanf("%d",&m); for(int i=0;i<m;i++){ int l,r; scanf("%d%d",&l,&r); if(l==r){puts("true");continue;} int tl=l,tr=r; int len=r-l+1; l=mp[l]; r=mp[r]; if(l==0&&r==0){ puts("maybe"); } else if(l==0){ l=lower_bound(b+1,b+1+n,tl)-(b+1)+1; if(sol(l,r-1)>=a[r])puts("false"); else puts("maybe"); } else if(r==0){ r=lower_bound(b+1,b+1+n,tr)-(b+1)+1; if(sol(l+1,r-1)>=a[l])puts("false"); else puts("maybe"); } else if(a[r]>a[l]){ puts("false"); } else if(sol(l+1,r-1)>=a[r])puts("false"); else if(r-l+1!=len)puts("maybe"); else puts("true"); } } return 0;}
0 0
- HYSBZ 1067 RMQ
- HYSBZ-1067 降雨量 RMQ
- HYSBZ(1067) 降雨量(RMQ)
- HYSBZ - 1067
- HYSBZ-1067 降雨量
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- .html(),.text()和.val()的差异总结
- Android RecyclerView 自动加载更多
- Go编程入门教程
- https ssl证书的工作原理及使用相关知识收集
- 双色球开奖啦~~~
- HYSBZ 1067 RMQ
- PCL输入输出
- Android中的线程与线程池
- Android Service非常全面的解析
- 微信公共号(企业号)开发框架-gochat的从零开始教程(二): 5分钟快速搭建自己的公共号
- 单词2016.9.16
- |Hdu 1561|动态规划|The more, The Better
- 127.自己开发一个 PHP 框架
- arp是什么协议,简述其在tcp/ip协议栈中的主要作用