GCD (RMQ + 二分)
RMQ存的是区间GCD,然后遍历 i: 1->n, 然后不断地对[i, R]区间进行二分求以i为起点的相同gcd的区间范围,慢慢缩减区间。
#include<bits/stdc++.h>
#define LL long long
using namespace std; const int maxn = 1e5 + ;
int in[maxn], dp[maxn][], mm[maxn];
map<int, LL>cnt; void init(int n){
mm[] = -;
for(int i = ; i <= n; i ++){
mm[i] = (i&(i - ))?mm[i - ]:mm[i - ] + ;
dp[i][] = in[i];
}
for(int j = ; j <= mm[n]; j ++)
for(int i = ; i + (<<j) - <= n; i ++)
dp[i][j] = __gcd(dp[i][j - ], dp[i + (<<(j-))][j - ]);
} int RMQ(int l, int r){
int k = mm[r - l + ];
return __gcd(dp[l][k], dp[r - (<<k) + ][k]);
} int main(){
int T,n,m;scanf("%d",&T);
for(int ncase = ; ncase <= T; ncase ++){
printf("Case #%d:\n",ncase);
scanf("%d",&n);
for(int i = ; i <= n; i ++)scanf("%d",&in[i]);
init(n);cnt.clear();
int L, R, l, r, val, m;
for(int i = ; i <= n; i ++){
cnt[in[i]] ++;
L = i;R = n;
while(L < R){
val = RMQ(L,R) + ;
l = L;r = R;
while(l < r){
m = (l + r)/;
if(RMQ(L, m) >= val)
l = m + ;
else
r = m;
}
cnt[val - ] += R - m;
R = m;
}
}
scanf("%d",&m);
for(int i = ; i < m; i ++){
scanf("%d%d",&l,&r);
int val = RMQ(l,r);
printf("%d %lld\n",val, cnt[val]);
}
}
return ;
}
GCD (RMQ + 二分)的更多相关文章
- HDU 5726 GCD (RMQ + 二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 给你n个数,q个询问,每个询问问你有多少对l r的gcd(a[l] , ... , a[r]) ...
- 2016 Multi-University Training Contest 1 GCD RMQ+二分(预处理)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 题意:有N(N <= 100,000),之后有Q(Q <= 100,000)个区间查询[ ...
- *HDU3486 RMQ+二分
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- hdu 5289 Assignment(2015多校第一场第2题)RMQ+二分(或者multiset模拟过程)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 题意:给你n个数和k,求有多少的区间使得区间内部任意两个数的差值小于k,输出符合要求的区间个数 ...
- hdu 3486 Interviewe (RMQ+二分)
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
原文地址:http://www.cnblogs.com/GXZlegend/p/6825389.html 题目描述 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一 ...
- HDU 5089 Assignment(rmq+二分 或 单调队列)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 玲珑杯 Round 19 B Buildings (RMQ + 二分)
DESCRIPTION There are nn buildings lined up, and the height of the ii-th house is hihi. An inteval [ ...
- HDU 5726 GCD(RMQ+二分)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5726 题意:给出一串数字,现在有多次询问,每次询问输出(l,r)范围内所有数的gcd值,并且输出有多 ...
随机推荐
- zip压缩类
using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...
- json和jsonp的区别?
json返回的是一串json格式数据:而jsonp返回的是脚本代码(包含一个函数调用): jsonp的全名叫做json with padding,就是把 json 对象用符合 js 语法的形式包裹起来 ...
- 10.8-uC/OS-III内部任务(中断处理任务 OS_IntQTask())
1.当设置OS_CFG.H中的OS_CFG_ISR_POST_DEFERRED_EN为1时, uC/OS-III就会创建一个任务,它的作用是尽快完成ISR中对post函数的调用, 将信号量.消息等对象 ...
- vue-router重新定向、redirect与alias区别
redirect app.vue <router-link to="/goParams/918/i like vue">goParams</router-link ...
- MySQL常用SQL语句优化
推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要 ...
- MySQL 5.5 服务器变量详解(一)
autocommit={0|1} 设定MySQL事务是否自动提交,1表示立即提交,0表示需要显式提交.作用范围为全局或会话,可用于配置文件中(但在5.5.8之前的版本中不可用于配置文件),属于动态变量 ...
- 前端 HTML form表单标签 input标签 type属性 checkbox 多选框
多选框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- AutoML初创公司探智立方:模型的物竞天择与适者生存
从回归分析的出现到深度学习的蓬勃发展,这条算法的进化路线与其说是「机器替代人」,不如说是「机器帮助人类完毕我们不擅长的事」. 这份「不擅长」列表里有「不擅长从大量数据中寻找规律」.「不擅长同一时候完毕 ...
- mysql常用反斜杠命令
mysql常用反斜杠命令 https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html https://dev.mysql.com/doc/r ...
- 20181223 python 使用Beautiful Soup
(这篇,没什么营养价值) 怎么说呢! 爬虫吧!把html页面进行解析得到有效数据,而beautiful soup 能快速格式化页面再进行方法对数进行提取,存入想要存入的DB中. from bs4 im ...