2024.2.16 LGJ Round

A

你有一个数组 \(a\),初始为 \(0\),你要使 \(a_i\ge h_i\),你可以把任意相邻两个 \(a\),一个加一,另一个加二。
问最少操作多少次。\(n,h\le 1e6\)

B

你需要求大小为 \(n\) 的环的个数,使得旋转后都不同。
你可以选若干个点出来染上 \(k\) 个颜色中的一个,但是相邻两个点不能都能染颜色。
\(n\le 1e9\).

首先考虑 burnside,\(n\) 种置换中第 \(i\) 种中不动点的个数恰好是 \(\gcd(i,n)\)
于是我们枚举 \(\gcd\),乘上 \(\varphi\),变成求多少个长 \(m\) 的序列满足上述条件,且首尾不同时染颜色。
\(s(m)\) 表示大小为 \(m\) 的序列,不考虑首尾的方案数。
容斥,\(m\) 的贡献是 \(s(m)-s(m-4)\),即把首尾钦定选上的减去。
\(s(m)\) 可以 dp,优化用矩阵快速幂计算。

C

你需要维护正整数集合,每次加数或删数,问其中 \(\gcd =k\) 的对数有多少,\(k\) 是常数。
数的大小 \(\le 1e5\),操作数 \(\le 1e5\)

莫反,把贡献转化为 \(\sum_{d=1}^n\mu(d)\times \dfrac{1}{2}(\sum_{i=1}^{n/d}cnt_{id})((\sum_{i=1}^{n/d}cnt_{id})-1)\).
对于更改的 \(x\),看有多少个 \(d\) 被影响即可。

posted @ 2024-02-16 15:00  s1monG  阅读(19)  评论(0)    收藏  举报