D. CGCDSSQ (gcd&ST表)

考虑前缀 g c d gcd gcd 是非递增的,若不同最少 / 2 /2 /2 ,所以增加的 g c d gcd gcd 的个数 l o g log log的

所以考虑用 m a p map map 维护前缀进行递推。

#include <bits/stdc++.h>
using namespace std;int n, q;
map<int,long long> tmp, d, res;
int main() {scanf("%d",&n);for(int i = 0, x; i < n; i++) {scanf("%d",&x);tmp.clear();for(auto p: d) tmp[__gcd(x, p.first)] += p.second;tmp[x]++;swap(tmp, d);for(auto p: d) res[p.first] += p.second;}scanf("%d",&q);int x;while(q--) scanf("%d", &x), printf("%lld\n", res[x]);
}

此外还可以根据 g c d gcd gcd的非递增性,对每个左端点进行二分,按 g c d gcd gcd相同的一段进行二分,这样变化最多 l o g log log次,然后用个map统计答案即可。

下面的参考代码二分是的最小的第一个不同的gcd位置。

#include <bits/stdc++.h>
using namespace std;
#define maxn 101000
typedef long long LL; template <typename T>
inline void read(T &s) {s = 0; T w = 1, ch = getchar(); while (!isdigit(ch)) { if (ch == '-') w = -1; ch = getchar(); }while (isdigit(ch)) { s = (s << 1) + (s << 3) + (ch ^ 48); ch = getchar(); }s *= w;
}int n, m;
int a[maxn], lg[maxn], q[maxn];
int f[maxn][25];
map <int, LL> ans; inline int gcd(int x, int y) { return y ? gcd(y, x % y) : x; } inline void pre_work() { // 预处理gcdlg[0] = -1; for (int i = 1; i <= n; ++i) {lg[i] = lg[i >> 1] + 1, f[i][0] = a[i]; }for (int j = 1; j <= 20; ++j) {for (int i = 1; i <= n - (1 << (j - 1)) + 1; ++i) {f[i][j] = gcd(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]); }}
}inline int query(int l, int r) { // 查询int t = lg[r - l + 1]; return gcd(f[l][t], f[r - (1 << t) + 1][t]);
}void solve(int x) { // x 为固定的左端点int L = x, R = x; while (R <= n) {int left = L, right = n; int g = query(x, L); while (left <= right) {int mid = (left + right) >> 1; if (query(x, mid) == g) left = mid + 1; else right = mid - 1; }R = left; ans[g] += (LL)R - L; L = R; }
} int main() {read(n); for (int i = 1; i <= n; ++i) read(a[i]); pre_work(); for (int i = 1; i <= n; ++i) solve(i); // 处理左端点read(m); for (int i = 1; i <= m; ++i) {int x; read(x); printf("%lld\n", ans[x]); }return 0;
}

D. CGCDSSQ (gcdST表)相关推荐

  1. mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间

    先贴一张图! 第一步,"很重要" 在mysql中,有一个创建之初自带的库information_schema,这个库中包含着数据库相关信息,查询数据占用空间就是使用该库,所以首先进 ...

  2. 一个form表单,多个提交按钮(实现不同功能和地址的提交)

    直接上代码 表单部分: <form action="" name="find" method="post" enctype=" ...

  3. form表单提交前进行ajax或js验证,校验不通过不提交

    在使用form表单进行提交数据前,需要进行数据的校验->表单的校验(如:两次密码输入是否相同)+后台数据的校验(如:账号是否存在),这个时候,如果哪步校验不通过,表单将停止提交,同时避免后台主键 ...

  4. 用js方法做提交表单的校验

    基础知识: 原始提交如下: <form action="<%=basePath %>puser/register" method="post" ...

  5. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  6. php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?

    我有两张桌子 table: people id name goods_owned 1 john 1,4,3 2 Mike 2,5 3 Sam 1,5,2 4 Andy 5,3,4 – table go ...

  7. form表单提交编码的问题

    浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urle ...

  8. js异步提交form表单的解决方案

    1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span sty ...

  9. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作

    上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...

最新文章

  1. ACMNO.37 C语言-数字交换 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
  2. automapper
  3. django手机访问_Django对接支付宝电脑网站、App支付步骤详解!这个框架是真强!...
  4. Redis 集合处理
  5. LeetCode 951. 翻转等价二叉树(递归)
  6. 15.立体几何——立体,基本概念,随机点立体图,立体估计深度_2
  7. C++虚函数的实现原理(最通俗但并不想专业的解释)
  8. Flink流处理练习
  9. php实例新讲php,实例讲解PHP5 新特性
  10. 当过爱因斯坦助理,参加过曼哈顿计划,他还发明受欢迎的编程语言 | 人物志...
  11. Delphi2010 Dll 函数列表查看
  12. 小米路由器 网站服务器地址,小米路由器设置网址
  13. e580显卡驱动_联想e580网卡驱动下载|联想e580无线网卡驱动官方版_ - 极光下载站...
  14. KiCad下载及安装教程
  15. 批量给pdf电子书添加页码书签
  16. Insyde uefi 隐藏设置_vivo手机怎么隐藏应用 vivo手机怎样把软件隐藏起来?
  17. win10不识别移动硬盘
  18. linux看内存插槽,Linux查看内存大小和插槽
  19. 《新科学家》:十大最不可思议计算机
  20. Matlab如何打开新版本程序,求助:老程序在新版本的matlab中运行

热门文章

  1. armbianvnc共享桌面
  2. 电脑上不显示WLAN,无法连接WIFI!
  3. 使用信号量机制解决生产者消费者问题
  4. phpcms-前台模板调用和后台模板调用
  5. faded计算机教程数字顺序,superpads faded数字教程谱子
  6. 谷粒商城高级篇笔记1
  7. 中秋邀请共赏图数据库-蚂蚁集团图数据TuGraph 正式开源
  8. java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据
  9. chrome调用IE
  10. linux内核编译过程的最终总结版