hdu 4630 No Pain No Game 多校第三场
来源:互联网 发布:制作手机视频的软件 编辑:程序博客网 时间:2024/05/18 13:44
对每个数x,用pre[x]表示x的倍数中,在当前位置之前,最靠右的位置,在考虑当前数a[i]的所有约数v,对于所有l<=pre[v]的询问,v都是可能的答案。用树状数组来维护。
#include <cstdio>#include <cstring>#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;const int MAXN = 50005;int c[MAXN];int ans[MAXN],a[MAXN];int pre[MAXN];vector<int> divv[MAXN];//约数int n,Q;void init(){ for(int i=1;i<MAXN;i++) for(int j=i;j<MAXN;j+=i) divv[j].push_back(i);}void updata(int pos,int v){ for(int i=pos;i<=n;i+=i&(-i)) { c[i]=max(c[i],v); }}int query(int p){ int res=0; for(int i=p;i>0;i-=i&(-i)) { res=max(res,c[i]); } return res;}struct pp{ int l,r,id; bool operator < (const pp a)const{ return r<a.r; }}q[MAXN];int main(){ init(); int T; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); scanf("%d",&Q); for(int i=0;i<Q;i++) { scanf("%d%d",&q[i].l,&q[i].r); q[i].id=i; } sort(q,q+Q); memset(c,0,sizeof(c)); memset(pre,0,sizeof(pre)); for(int i=1,k=0;i<=n;i++) { int x=a[i],siz=divv[x].size(); for(int j=0;j<siz;j++) { int v=divv[x][j]; if(pre[v]!=0) updata(n-pre[v]+1,v); pre[v]=i; } while(q[k].r==i&&k<Q) { ans[q[k].id]=query(n+1-q[k].l); k++; } } for(int i=0;i<Q;i++) printf("%d\n",ans[i]); } return 0;}
- hdu 4630 No Pain No Game 多校第三场
- 2013 多校第三场 hdu 4630 No Pain No Game(线段树)
- HDUOJ 4630 2013多校第三场第10题 No Pain No Game
- hdu 4630 No Pain No Game
- HDU 4630 No Pain No Game
- HDU 4630 No Pain No Game
- hdu 4630 No Pain No Game
- hdu 4630 No Pain No Game
- HDU-4630-No Pain No Game
- hdu 4630No Pain No Game
- HDU 4630 No Pain No Game
- 2013多校联合3 1010 No Pain No Game(hdu 4630)
- hdu 4630 No Pain No Game 线段树 树状数组
- HDU 4630 No Pain No Game 解题报告
- HDU 4630 No Pain No Game 树状数组
- hdu 4630 no pain no game 树状数组+离线查询
- HDU 4630 No Pain No Game 离线+线段树
- HDU 4630 No Pain No Game(离线 + 树状数组)
- 堆溢出和栈溢出
- mysql jdbc驱动设置fetchsize 要连接字串里有useCursorFetch=true 才行
- (转)堆?栈?(补充)
- C++中PIMPL技法
- (转)堆?栈—深刻理解堆与栈
- hdu 4630 No Pain No Game 多校第三场
- 那些年黑了你的微软BUG
- hadoop-数据去重
- poj 2112 Optimal Milking(二分搜索+最大流)
- ANT testng Process fork failed (-verbose参数的巨大作用)
- Java的对象包装器、自动打包、值调用
- 三层结构
- 懒汉式饿汉式
- 三层概述