HDU 5875 Function(logn取模+二分rmq)
来源:互联网 发布:三明职业技术学院网络 编辑:程序博客网 时间:2024/05/22 02:40
代码:
#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <string>#include <vector>#include <cstdio>#include <cctype>#include <cstring>#include <sstream>#include <cstdlib>#include <iostream>#include <algorithm>#pragma comment(linker,"/STACK:102400000,102400000")using namespace std;#define MAX 100005#define MAXN 1000005#define maxnode 15#define sigma_size 30#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define lrt rt<<1#define rrt rt<<1|1#define middle int m=(r+l)>>1#define LL long long#define ull unsigned long long#define mem(x,v) memset(x,v,sizeof(x))#define lowbit(x) (x&-x)#define pii pair<int,int>#define bits(a) __builtin_popcount(a)#define mk make_pair#define limit 10000//const int prime = 999983;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f;const double pi = acos(-1.0);const double inf = 1e18;const double eps = 1e-8;const int mod = 1e9+7;const ull mx = 133333331;/*****************************************************/inline void RI(int &x) { char c; while((c=getchar())<'0' || c>'9'); x=c-'0'; while((c=getchar())>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0'; }/*****************************************************/int a[MAX];int d[MAX][25];int n;void RMQ_init(){ for(int i=0;i<n;i++) d[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++){ for(int i=0;i+(1<<j)-1<n;i++){ d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]); } }}int query(int l,int r){ if(l>r) return INF; int k=0; while((1<<(k+1))<=r-l+1) k++; return min(d[l][k],d[r-(1<<k)+1][k]);}int main(){ //freopen("in.out","r",stdin); int t; cin>>t; while(t--){ cin>>n; for(int i=0;i<n;i++) scanf("%d",&a[i]); RMQ_init(); int m; cin>>m; for(int i=0;i<m;i++){ int l,r; scanf("%d%d",&l,&r); l--;r--; int k=a[l]; if(l==r){ printf("%d\n",a[l]); continue; } l++; while(l<=r){ //cout<<l<<" "<<r<<endl; int L=l,R=r; int flag=0; while(L<R){ int mid=(L+R)/2; if(query(L,mid)<=k) R=mid; else if(query(mid+1,R)<=k) L=mid+1; else{ flag=1; break; } } if(flag) break; k%=a[L]; l=L+1; } printf("%d\n",k); } } return 0;}
0 0
- HDU 5875 Function(logn取模+二分rmq)
- hdu 5875 Function 二分+rmq
- HDU 5875 Function (RMQ+二分)
- hdu 5875 Function(二分RMQ)
- [HDU 5875] Function (单调栈/(RMQ+二分))
- HDU 5875 Function(二分区间+RMQ)——2016 ACM/ICPC Asia Regional Dalian Online
- hdu 5875 Function 线段树||RMQ
- HDU5875-Function(RMQ + 二分)
- hdu 5875 Function ST+二分
- hdu 3486 RMQ + 二分
- HDU 3603 二分+RMQ
- HDU 3486 RMQ+二分
- hdu 5726 RMQ+二分
- HDU 5726 (RMQ 二分)
- hdu-4737-rmq+二分
- HDU 5726 RMQ+二分
- HDU 3486 RMQ+二分
- HDU 5875 Function (取模+分治+线段树)
- 环形双缓冲队列
- 美团笔试
- hdu5873 Football Games(数学)
- leetcode 395. Longest Substring with At Least K Repeating Characters
- (OK) Android - MPTCP - (android-x86_64_defconfig---kernel-arch-x86-configs---android-x86-6.0-rc2)
- HDU 5875 Function(logn取模+二分rmq)
- 2AddTwoNumbers
- 剑指Offer面试题21:包含min函数的栈
- 留坑 DP
- 仿豌豆荚Smart锁屏,MIUI7直跳辅助功能设置
- 微微一笑
- RecyclerView万能适配器,点击事件,分割线,间距等写法
- null is an object evaluating 'this_onPress'
- 论文写作