题目链接:http://codeforces.com/contest/475/problem/D

是昨天晚上的CF题目,题意是给定你n个数,问你所有子区间内的最小公约数是x的个数是多少

问的康神,了解了ST表。

其实我也没太明白,看了看博文觉得还是不错的:http://hplonline20100103.blog.163.com/blog/static/1361364342010040044244/

然后就是logn去扫了

代码:

 #include <bits/stdc++.h>
using namespace std;
typedef long long LL; int ST[][]; int getGCD(int l,int r){
int u = -__builtin_clz(r-l+);
return __gcd(ST[l][u],ST[r+-(<<u)][u]);
} map<int,LL> mp; int main(){
int n;
scanf("%d",&n);
for(int i=;i<n;i++) scanf("%d",&ST[i][]);
for(int j=;(<<j)<=n;j++) for(int i=;i<n;i++)
ST[i][j+]=__gcd(ST[i][j],ST[i+(<<j)][j]);
for(int i=;i<n;i++){
int ed = i;
while( ed<n ){
int g = getGCD(i,ed);
int l=ed,r=n-,ge=-;
while( l<=r ){
if( r-l<= ){
if(getGCD(i,r)==g){ ge=r;break; }
if( getGCD(i,l)==g )ge=l;
break;
}
int m = l+r>>;
if( getGCD(i,m)==g ) l = m;
else r = m;
}
mp[g]+=ge-ed+;
ed = ge+;
}
}
int Q;
scanf("%d",&Q);
while(Q--){
int x;
scanf("%d",&x);
printf("%I64d\n",mp[x]);
}
return ;
}

[CF 475D] CGCDSSQ (RMQ)的更多相关文章

  1. codeforces 475D. CGCDSSQ

    D. CGCDSSQ time limit per test 2 seconds memory limit per test 256 megabytes Given a sequence of int ...

  2. Codeforces 475D CGCDSSQ(分治)

    题意:给你一个序列a[i],对于每个询问xi,求出有多少个(l,r)对使得gcd(al,al+1...ar)=xi. 表面上是询问,其实只要处理出每个可能的gcd有多少个就好了,当左端点固定的时候,随 ...

  3. Codeforces 475D CGCDSSQ 求序列中连续数字的GCD=K的对数

    题目链接:点击打开链接 #include <cstdio> #include <cstring> #include <algorithm> #include < ...

  4. Codeforces 475D CGCDSSQ 区间gcd值

    题目链接 题意 给定一个长度为 \(n\) 的数列 \(a_1,...,a_n\) 与 \(q\) 个询问 \(x_1,...,x_q\),对于每个 \(x_i\) 回答有多少对 \((l,r)\) ...

  5. [CF 191C]Fools and Roads[LCA Tarjan算法][LCA 与 RMQ问题的转化][LCA ST算法]

    参考: 1. 郭华阳 - 算法合集之<RMQ与LCA问题>. 讲得很清楚! 2. http://www.cnblogs.com/lazycal/archive/2012/08/11/263 ...

  6. CF#52 C Circular RMQ (线段树区间更新)

    Description You are given circular array a0, a1, ..., an - 1. There are two types of operations with ...

  7. 【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)

    3473: 字符串 Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串 ...

  8. BZOJ 3277: 串/ BZOJ 3473: 字符串 ( 后缀数组 + RMQ + 二分 )

    CF原题(http://codeforces.com/blog/entry/4849, 204E), CF的解法是O(Nlog^2N)的..记某个字符串以第i位开头的字符串对答案的贡献f(i), 那么 ...

  9. Amphetamine的cf日记

    之前挂上的 今天填坑 2018.2.14 #462 A 给两个集合,B分别可以从一个集合中选一个数,B想乘积最大,A想最小,A可以删除一个第一个集合中的元素,问最小能达到多少. 这题..水死啦.我居然 ...

随机推荐

  1. firefox不支持background-position-x background-position-y,使用background-position:5px 5px;

    firefox不支持background-position-x background-position-y,使用background-position:5px 5px;

  2. Jenkins入门系列之

    Jenkins入门系列之——00答疑解惑 Jenkins进阶系列之——11修改Jenkins用户的密码 Jenkins进阶系列之——12详解Jenkins节点配置 Jenkins进阶系列之——13修改 ...

  3. Nokia 的 Scrum标准

    Nokia 的 Scrum标准:• 迭代要有固定时长(被称为“时间盒——timebox”),不能超过六个星期.• 在每一次迭代的结尾,代码都必须经过 QA 的测试,能够正常工作.• Scrum 团队必 ...

  4. Jfinal连接自助数据库的数据源

    # 开发数据库地址 #jdbcUrl = jdbc:oracle:thin:@localhost:1521:testsa jdbcUrl = jdbc:srdbsql://127.0.0.1:1975 ...

  5. ORACLE 表函数实现

    1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type t_table is table of number; 上面的类型 ...

  6. TextArea限制输入长度

    cs文件中添加文本框属性this.TextBox.Attributes.Add("MaxLength", "200"); $(document).ready(f ...

  7. 【jmeter】测试报告优化<一>

    具体问题如下: 1.Date report这里的时间没有正确显示出来 2.Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间. 本文主要解决上述两个问题,具体报 ...

  8. LintCode "4 Sum"

    4 Pointer solution. Key: when moving pointers, we skip duplicated ones. Ref: https://github.com/xbz/ ...

  9. form 转json,将form表单中的数据序列化数组后转换为Json

    页面中引用了jquery,第一想到的就是序列化,但是序列化后的表单字段为a=1&b=2这种. 这里写一个jquery的扩展方法 $.fn.serializeObject = function( ...

  10. Python之Fabric模块

    Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行.文件上传.下载及完整执行日 ...