博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.12.14-dtoj-3220: 区间(interval)——区间gcd
阅读量:6893 次
发布时间:2019-06-27

本文共 819 字,大约阅读时间需要 2 分钟。

题目大意:

给一段序列a[i],求有m个询问,每个询问有一个x,求有多少个区间gcd恰好为x

数据范围:

对于100%的数据,n,m≤1e5,a[i],x≤2e9

思路:

对于一段序列,gcd下降的速度极快,所以整个序列存在的gcd总数不会特别多。

至多log2e9 ??不会证明

考虑存在以每一个节点为结尾存在的gcd种类及数量,每次不断向后更新,用map存所有出现过的gcd值和出现次数

 

!!!!除了线段树维护gcd外,另一种gcd的维护方法!!记录

以下代码:

#include
#define il inline#define LL long long#define _(d) while(d(isdigit(ch=getchar())))using namespace std;const int N=1e5+5;int n,m;vector
> g[N];map
ma;il int read(){
int x;char ch;_(!);x=ch^48;_()x=(x<<1)+(x<<3)+(ch^48);return x;}il int gcd(int x,int y){
if(x>y)swap(x,y);if(x==0)return y;return gcd(y%x,x);}int main(){ n=read(); for(int i=1;i<=n;i++){ int last=-1;int x=read();int k=-1; for(int j=0;j
View Code

 

转载于:https://www.cnblogs.com/Jessie-/p/10117595.html

你可能感兴趣的文章
oracle学习6
查看>>
如何正确地使用android中的progressdialog
查看>>
http协议参数详解
查看>>
Python字符串格式化
查看>>
关于synchronized关键字
查看>>
第3章 高级装配
查看>>
c++拷贝构造函数详解
查看>>
C语言博客作业03--函数
查看>>
使用urllib和http.cookiejar获取python老男孩学员成绩
查看>>
双 MySQL 启动、停止脚本
查看>>
node.js 中的全局对象
查看>>
Oracle(限定查询1)
查看>>
Python 国际化
查看>>
C#网络编程
查看>>
jquery 图片自动切换
查看>>
【HDOJ】1224 Free DIY Tour
查看>>
企业架构框架体系
查看>>
css3动画(从上、左下、左、右进入页面)
查看>>
再写点看到的东西
查看>>
字符串匹配动态规划
查看>>