Solution -「CF645F」Cowslip Collections
设 \(f(i)\) 表示大小为 \(k\),\(\gcd\) 为 \(i\) 的方案数。\(F(i)\) 表示大小为 \(k\),\(\gcd\) 为 \(i\) 的倍数的方案数。
不难看出:\(F(i) = \sum \limits _{i | d} f(d)\)。同时记 \(w_i\) 为数列中 \(i\) 的倍数的个数,则 \(F(i) = \dbinom {w_i} {k}\)。
可以莫反对吧。
f (i) &= \sum _{i | d} F(d) \mu(\frac {d} {i})
\\
\mathrm{Ans} &= \sum _{i = 1} ^{k} i \times f(i) = \sum _{i = 1} ^{k} i \sum _{i | d}\mu (\frac {d} {i}) \times \dbinom {w_d} {k}
\end {align}
\]
有插入操作,不难发现每加入一个数只会让若干个 \(w_x\) 加上 \(1\)。
注意到这部分的贡献,应该为 \(a \times b\),其中 \(a = \dbinom {w_x + 1} {k} - \dbinom {w_x} {k}\),而 \(b = \sum \limits _{i | x} i \times \mu ({\frac {x} {i}})\)。
而 \(b\) 可以看出是 \(\mu\) 和 \(\mathrm{Id}\) 的卷积,也就是 \(\varphi\) ,可以线性筛预处理。
#include <cstdio>
typedef long long LL;
int Abs (int x) { return x < 0 ? -x : x; }
int Max (int x, int y) { return x > y ? x : y; }
int Min (int x, int y) { return x < y ? x : y; }
int Read () {
int x = 0, k = 1;
char s = getchar ();
while (s < '0' || s > '9') {
if (s == '-')
k = -1;
s = getchar ();
}
while ('0' <= s && s <= '9')
x = (x << 3) + (x << 1) + (s ^ 48), s = getchar ();
return x * k;
}
void Write (int x) {
if (x < 0)
putchar ('-'), x = -x;
if (x > 9)
Write (x / 10);
putchar (x % 10 + '0');
}
void Print (int x, char s) { Write (x), putchar (s); }
const int Mod = 1e9 + 7;
const int Maxn = 1e6 + 5;
bool Flag[Maxn];
int Num[Maxn], Inv[Maxn], Fac[Maxn], Phi[Maxn], Cnt[Maxn], Len = 0;
int C (int n, int m) { return n < m ? 0 : (LL)Fac[n] * Inv[n - m] % Mod * Inv[m] % Mod; }
void Init () {
Flag[1] = true, Phi[1] = 1;
for (int i = 2; i < Maxn; i++) {
if (!Flag[i])
Num[++Len] = i, Phi[i] = i - 1;
for (int j = 1; j <= Len; j++) {
if (i * Num[j] >= Maxn)
break;
Flag[i * Num[j]] = true;
if (i % Num[j] == 0) {
Phi[i * Num[j]] = Phi[i] * Num[j];
break;
}
Phi[i * Num[j]] = Phi[i] * Phi[Num[j]];
}
}
Inv[1] = 1;
for (int i = 2; i < Maxn; i++)
Inv[i] = (LL)(Mod - Mod / i) * Inv[Mod % i] % Mod;
Fac[0] = 1, Inv[0] = 1;
for (int i = 1; i < Maxn; i++) {
Fac[i] = (LL)Fac[i - 1] * i % Mod;
Inv[i] = (LL)Inv[i - 1] * Inv[i] % Mod;
}
}
int main () {
Init ();
int n = Read (), k = Read (), q = Read (), Res = 0;
for (int i = 1, x; i <= n; i++) {
x = Read ();
for (int j = 1; j * j <= x; j++) {
if (x % j)
continue;
Cnt[j]++, Res = (Res + (LL)Phi[j] * (C (Cnt[j], k) - C (Cnt[j] - 1, k) + Mod) % Mod) % Mod;
if (j * j != x)
Cnt[x / j]++, Res = (Res + (LL)Phi[x / j] * (C (Cnt[x / j], k) - C (Cnt[x / j] - 1, k) + Mod) % Mod) % Mod;
}
}
for (int i = 1, x; i <= q; i++) {
x = Read ();
for (int j = 1; j * j <= x; j++) {
if (x % j)
continue;
Cnt[j]++, Res = (Res + (LL)Phi[j] * (C (Cnt[j], k) - C (Cnt[j] - 1, k) + Mod) % Mod) % Mod;
if (j * j != x)
Cnt[x / j]++, Res = (Res + (LL)Phi[x / j] * (C (Cnt[x / j], k) - C (Cnt[x / j] - 1, k) + Mod) % Mod) % Mod;
}
Print (Res, '\n');
}
return 0;
}
Solution -「CF645F」Cowslip Collections的更多相关文章
- Solution -「构造」专练
记录全思路过程和正解分析.全思路过程很 navie,不过很下饭不是嘛.会持续更新的(应该). 「CF1521E」Nastia and a Beautiful Matrix Thought. 要把所有数 ...
- Solution -「原创」Destiny
题目背景 题目背景与题目描述无关.签到愉快. 「冷」 他半靠在床沿,一缕感伤在透亮的眼眸间荡漾. 冷见惆怅而四散逃去.经历嘈杂喧嚣,感官早已麻木.冷又见空洞而乘隙而入.从里向外,这不是感官的范畴. 他 ...
- Solution -「GLR-R2」教材运送
\(\mathcal{Description}\) Link. 给定一棵包含 \(n\) 个点,有点权和边权的树.设当前位置 \(s\)(初始时 \(s=1\)),每次在 \(n\) 个结点内 ...
- Solution -「WF2011」「BZOJ #3963」MachineWorks
\(\mathcal{Description}\) Link. 给定你初始拥有的钱数 \(C\) 以及 \(N\) 台机器的属性,第 \(i\) 台有属性 \((d_i,p_i,r_i,g_i ...
- Solution -「LOCAL」二进制的世界
\(\mathcal{Description}\) OurOJ. 给定序列 \(\{a_n\}\) 和一个二元运算 \(\operatorname{op}\in\{\operatorname{ ...
- Solution -「SHOI2016」「洛谷 P4336」黑暗前的幻想乡
\(\mathcal{Description}\) link. 有一个 \(n\) 个结点的无向图,给定 \(n-1\) 组边集,求从每组边集选出恰一条边最终构成树的方案树.对 \(10^9+ ...
- Solution -「LOCAL」大括号树
\(\mathcal{Description}\) OurTeam & OurOJ. 给定一棵 \(n\) 个顶点的树,每个顶点标有字符 ( 或 ).将从 \(u\) 到 \(v\) ...
- Solution -「ZJOI2012」「洛谷 P2597」灾难
\(\mathcal{Description}\) link. 给定一个捕食网络,对于每个物种,求其灭绝后有多少消费者失去所有食物来源.(一些名词与生物学的定义相同 w.) 原图结点数 \ ...
- Solution -「JSOI2008」「洛谷 P4208」最小生成树计数
\(\mathcal{Description}\) link. 给定带权简单无向图,求其最小生成树个数. 顶点数 \(n\le10^2\),边数 \(m\le10^3\),相同边权的边数不 ...
随机推荐
- 扩展.Net Core Identity Server 授权方式,实现 手机号+ 验证码 登录
背景 国内来讲,注册/登录流程都是尽可能的简单,注册流程复杂,容易流失客户.手机号 + 短信验证码的方式非常普遍:但是框架默认并没有类似的功能,需要我们自己进行扩展. 思路 验证登录手机号为注册用户, ...
- 108_Power Pivot购物篮分析分组GENERATE之笛卡尔积、排列、组合
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 昨天在看论坛帖子时候(帖子),看到一个关于SKU组合的问题,有很多M大佬都给出了处理方案,于是想用dax也写一个 ...
- MongoDB 常用启动参数
每日一句 Once you choose your way of life, be brave to stick it out and never return. 生活的道路一旦选定,就要勇敢地走到底 ...
- IDEA找不到类但实际存在的问题解决
不知道某天开始Idea就开始抽风了. 现象: 一个service的接口类,就在同一个包下,但总是找不到,编辑器一直标红 编译可以通过 说明类本身应该是没什么问题的.问题是怎么重新编译重新reload ...
- 省HVV初体验(edu)
浙江省HVV初体验 此次参加的HVV是edu分会场,总的来说是对HVV有了一个初步的认识,了解实战和靶场练习之间存在的巨大鸿沟. 经历了这次HVV,对于渗透测试有了更深一步的理解.渗透测试的本质就是信 ...
- FastDFS 技术整理
1.FastDFS 1.1.了解基础概念 1.1.1.什么是分布式文件系统? 全称:Distributed File System,即简称的DFS 这个东西可以是一个软件,也可以说是服务器,和tomc ...
- Datax源码改造关键步骤记录
Datax源码改造关键步骤记录: 一.作业配置1.一个job配置:reader 和writer 的column 字段必须是所有表共有的:2.reader多张表,writer一个表时,所有reader的 ...
- JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...
- 接口测试postman深度挖掘应用③--postman终结篇
上一章节我们介绍了postman的变量测试以及导入数据测试基本上技术性的东西已经差不过了,这篇文章再系统性的介绍一下. 一.下载 官网:https://www.postman.com 1.选择需要下载 ...
- 2021.05.29【NOIP提高B组】模拟 总结
T1 题意:给你一个图,可以不花代价经过 \(K\) 条边,问从起点到终点的最短路 考试的想法:设 \(dis_{i,j}\) 表示从起点免费了 \(j\) 条边到 \(i\) 的最短路 然后直接跑 ...