tjut 4630
来源:互联网 发布:淘宝开店最新流程ppt 编辑:程序博客网 时间:2024/05/29 16:09
/* * Author:kuangbin * 1010.cpp */#include <stdio.h>#include <algorithm>#include <string.h>#include <iostream>#include <map>#include <vector>#include <queue>#include <set>#include <string>#include <math.h>using namespace std;const int MAXN = 50010;int c[MAXN];int n;int lowbit(int x){ return x&(-x);}void add(int i,int val){ while(i <= n) { c[i] = max(c[i],val); i += lowbit(i); }}int Max(int i){ int s = 0; while(i > 0) { s = max(s,c[i]); i -= lowbit(i); } return s;}int a[MAXN];int b[MAXN];int ans[MAXN];struct Node{ int l,r; int index;}node[MAXN];bool cmp(Node a,Node b){ return a.l > b.l;}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int T; int m; int l,r; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i = 1;i <= n;i++) scanf("%d",&a[i]); scanf("%d",&m); for(int i = 0;i < m;i++) { scanf("%d%d",&node[i].l,&node[i].r); node[i].index = i; } sort(node,node+m,cmp); int i = n; int j = 0; memset(b,0,sizeof(a)); memset(c,0,sizeof(c)); while(j < m) { while(i > 0 && i>= node[j].l) { for(int k =1;k*k <= a[i];k++) { if(a[i]%k == 0) { if(b[k]!=0) { add(b[k],k); } b[k] = i; if(k != a[i]/k) { if(b[a[i]/k]!=0) { add(b[a[i]/k],a[i]/k); } b[a[i]/k]=i; } } } i--; } while(j < m && node[j].l > i) { ans[node[j].index]=Max(node[j].r); j++; } } for(int i = 0;i < m;i++) printf("%d\n",ans[i]); } return 0;}
0 0
- tjut 4630
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- Ionic环境搭建
- Memcache的最佳实践方案
- laravel5数据库操作
- 什么东西只花十分钟,但是受益终身
- 认识Servlet
- tjut 4630
- MDK注释时用@使单词高亮
- BD___单例模式
- HDOJ-----4004二分
- HDU 1698 Just a Hook(线段树区间置换)
- Android打电话,发短信【JAVA】
- mysql生成不重复随机数(unique number generation)
- 第3章 开发支持
- **YII** 系列二yii的基本理解