随笔分类 - 算法-数学-数论
摘要:Kruskal 算法。考虑哪些边有可能被贪心选中。因为最小公倍数的要求太复杂、太苛刻,我们不妨忽略“最小”,只考虑是公倍数。因为这样新产生的边边权更大,不会影响答案。考虑点权是 k 的倍数的点之间的边,发现有用的边其中一个端点一定是大于等于 L 的第一个 k 的倍数。于是有用的总边数就被压缩到了 O(n log n) 级别。直接执行 kruskal 算法即可。此外,我们还可以不事先排序,用 priority_queue 把空间复杂度优化到 O(n)。
阅读全文
摘要:先考虑 k 是偶数的情况,此时 k 必须是 2n 的约数,且不能是 n 的约数,并且 k 要尽量小,所以令 k = 2 的 (n 里 2 的最高次数 + 1) 次方即可。若 k 还是太大,说明偶数无解,考虑奇数。此时有一个非常巧妙的想法:令 k2 = 2n / k。会发现这个 k2 一定是满足条件的。
阅读全文
摘要:用 bitset 支持操作 2,但操作 3 比较困难。考虑不是记录每个数的出现次数,而记录每个数的倍数的出现次数。这样操作 2,3 都可以轻松实现。回答询问时,把每个倍数乘以莫比乌斯函数,就能还原出答案
阅读全文
摘要:使用容斥原理解本题需要大量的分类讨论,故我们转而考虑不重不漏地计数。将约数按它在 A,B,C 哪几个里出现过,分为 7 类。枚举三元组里每个数的种类,则选择的方案数可以用一个组合数公式计算出来
阅读全文
摘要:通过分析题目的性质,可以把每种局面都映射为一个数。进而把局面之间的变换,转化为数的变换,也就是一个数论问题。此时有两种做法,一种是暴力枚举,一种是同余最短路。根号分治一下,即可通过本题。
阅读全文
摘要:对于某个数 x,某些问题里,需要在 [0, x - 1) 这些点上跑最短路。可以理解为,它是用最短路算法实现了一个 DP。这种做法被称为同余最短路。
阅读全文
摘要:运用唯一分解定理,考虑 x 的质因数构成。对小于等于 sqrt(n) 的质数暴力查询。对大于 sqrt(n) 的质数,可以有两种方法。若小质数部分 x_small > 1,则对每个大质数 p,查询 p * x_small 是否还在集合里。若 x_small = 1,对大质数序列分块。先确定 x 在哪块里,再暴力查询。
阅读全文
摘要:题目来源:Codeforces,#678,Codeforces Round #678 (Div. 2),CF1436;CF1436E Complicated Computations,CF1436F Sum Over Subsets。 CF1436E Complicated Computations
阅读全文
该文被密码保护。
摘要:考虑每个gcd对答案的贡献。这不好求。可以先求gcd至少是d时对答案的贡献(也就是gcd是d的倍数),然后再容斥回去。多次询问时,考虑预处理答案,从n-1向n递推,则只有d是n的约数会有变化,这样的d总量是O(n log n)的。但我们不能每次重新做一遍容斥。可以把容斥转化为给每个d一个贡献系数,这样d的贡献值变化时,只要拿变化量乘以系数即可。
阅读全文
摘要:分k>sqrt(n)和k<=sqrt(n)两种情况。后者可以直接爆搜。前者,每个数里,至多只有一个不合法的质数,所以不合法的数总是就是sigma( i=k+1~n, [i是质数] floor(n/i) )。这个函数不好求,不过floor(n/i)只有O(sqrt(n))种取值,我们枚举floor(n/i)的值,转化为求区间里质数数量。而这个区间端点恰好又都是floor(n/i)的形式,可以用min25筛的前半部分筛出来
阅读全文
摘要:min25筛,用来求一个函数的前缀和。算法分成两个部分,前一部分用DP的思想筛出质数的贡献。后一部分把质数与合数的贡献加和。它不仅可以用来求很多数论函数的前缀和,它前后两部分的思想也经常单独出现在一些题目中。
阅读全文
摘要:考虑从n-1到n递推答案f(n)。发现答案的差,可以用一个g(n)-g(n-1)表示出来。继续递归下去,到边界时,f(n)就等于1/2+g(n)。于是问题转化为求g(n)。先做一个分数裂项。然后套用莫比乌斯反演推出最终的式子。还需要卡一卡空间。
阅读全文
摘要:题目链接 我们设$h(i)$,表示要到达点$i$,最远必须经过$h(i)$。特别地,如果永远无法到达$i$,令$h(i)=\inf$。那么,每个位置$i$,会在$\text\in[h(i),m]\(时成为一个能够到达的位置(其中\)\text\(表示可以走的范围为\)[0,\text]\()。因此最
阅读全文
摘要:对于一个排列,它的操作次数是它所有循环圈长度的$\operatorname{lcm}$。 因为答案是求乘积。我们可以分别计算每个质数的贡献。 对于一个质数$p$,它对答案的贡献是每个排列中,所有循环圈长度(分解质因数后)$p$的次数的最大值之和。即: $$ ans=\prod_{p}p^{\sum_
阅读全文
摘要:CASE $1\sim 3$ $n$组测试数据,每次输入一个数$x$,求$19^x$。 测试点$1$,\(x=0,1,\dots n-1\),可以直接递推。 测试点$2$要开long long并用快速幂。 测试点$3$中$x$超出了long long范围。根据欧拉定理,当$a,p$互质时,\(a^b
阅读全文
摘要:这文章好水啊。。。 公式: 原始版: \(g(x)=\sum_{d|x}f(d)\Leftrightarrow f(x)=\sum_{d|x}\mu(\frac{x}{d})g(d)\) 推论式: \(g(x)=\sum_{x|d}f(d)\Leftrightarrow f(x)=\sum_{x|d
阅读全文