Codeforces915G. Coprime Arrays】的更多相关文章

n<=2e6的数组,m<=2e6个询问,对1<=i<=m的每个i问:只用<=i的数字填进数组,有多少种方案使数组的总gcd=1.强制把每个询问的答案求出来. 比如说现在有个确定的i=t,然后看看答案怎么算先.先把所有情况加起来,然后除去gcd=2,3,4,5,……的,那直接统计有多少gcd=2,3,4,5的不方便,总可以统计有多少gcd是2的倍数的,3的倍数的,……,吧!这样的话丢掉了gcd为2的倍数,3的倍数的,等等6的倍数丢多了一次因为在2和3都算了,要减掉……就一个容斥…
Coprime Arrays 啊,我感觉我更本不会莫比乌斯啊啊啊, 感觉每次都学不会, 我好菜啊. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int, int> #d…
[题目]G. Coprime Arrays [题意]当含n个数字的数组的总gcd=1时认为这个数组互质.给定n和k,求所有sum(i),i=1~k,其中sum(i)为n个数字的数组,每个数字均<=i,总gcd=1的方案数.n<=2*10^6.答案将所有sum(i)处理成一个数字后输出. [算法]数论(莫比乌斯反演) [题解]假设当前求sum(k),令f(i)表示gcd=i的数组方案数,F(i)表示i|gcd的数组的方案数. 因为F(x)=Σx|df(d),由莫比乌斯反演定理,f(x)=Σx|d…
Discipntion Let's call an array a of size n coprime iff gcd(a1, a2, ..., an) = 1, where gcd is the greatest common divisor of the arguments. You are given two numbers n and k. For each i (1 ≤ i ≤ k) you have to determine the number of coprime arrays …
Coprime Arrays CodeForces - 915G Let's call an array a of size n coprime iff gcd(a1, a2, ..., *a**n) = 1, where gcd* is the greatest common divisor of the arguments. You are given two numbers n and k. For each i (1 ≤ i ≤ k) you have to determine the…
CF915G Coprime Arrays 题解 (看了好半天终于看懂了) 我们先对于每一个i想,那么 我们设 我们用莫比乌斯反演 有了这个式子,可比可以求出△ans呢?我们注意到,由于那个(i/d)是下取整了的,所以i++后(下文的 i 是+1后的 i),只有当(d+1)|i 时答案有变化,于是 我们可以预处理a^n,以及用埃氏筛预处理△ans[i] CODE #include<cstdio> #include<cstring> #include<vector> #i…
传送门 差分是真心人类智慧--完全不会 这么经典的式子肯定考虑莫比乌斯反演,不难得到\(b_k = \sum\limits_{i=1}^k \mu(i) \lfloor\frac{k}{i} \rfloor^n\) 直接做是\(O(n\sqrt{n})\)的不够优秀,但是我们需要求的是\(b_1\)到\(b_K\)而不是单独的一个\(b\),这是最重要的一个性质. 考虑每一个数\(p\)对\(b_1\)到\(b_k\)的贡献.因为\(\mu(p)\)不变,所以对于\(\forall k \in…
反演一下可以得到$b_i=\sum\limits_{d=1}^i{\mu(i)(\lfloor \frac{i}{d} \rfloor})^n$ 整除分块的话会T, 可以维护一个差分, 优化到$O(nlogn+klogk)$ #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #include <set> #include <map>…
求a_i 在 [1,k]范围内,gcd(a_1,a_2...,a_n) = 1的a的数组个数. F(x)表示gcd(a_1,a_2,...,a_n) = i的a的个数 f(x)表示gcd(a_1,a_2,...,a_n) = ki的a的个数(实际上就是i的倍数) f(x) = segma(x | d) F(d) F(x) = segma(x | d) mu(d / x) * f(d) F(1) = segma(d,1,k) mu(d) * f(d) f(d) = (k / d)^n 由于k变化时…
比赛感想 本来21:05开始的比赛,结果记成21:30了...晚了25分钟才开始[捂脸] 这次是Educational Round,所以还比较简单. 前两道题一眼看去模拟+贪心,怕错仔细看了好几遍题,很快切掉 第三题,dfs+贪心 一开始想得有点简单,少了几种情况,写代码时才发现问题-- 悲伤地发现 写+调 这道题用了我很长时间-(这叫什么?基础不牢,地动山摇!) 然后,居然只剩40分钟了-- 第四题,啊啊啊! 图论,我的痛! 果断跳过 第五题,额,不就是个线段树么? n<=10 \(^9\)…