Loading

题目归档 #8

目录

Luogu4318 完全平方数

首先肯定二分。接下来问题变成求 \(1 \sim n\) 中有多少个数是完全平方数的倍数,考虑容斥。

在这道题中,我们先把 \(2\) 的平方的倍数和 \(3\) 的平方的倍数给标记,接下来发现 \(6\) 的平方的倍数被标记了两次。所以它们的容斥系数分别为 \(1,1,-1\)

不难发现,一个数若含偶数个互不相同素因子,其容斥系数为 \(-1\),若含奇数个互不相同素因子,其容斥系数为 \(1\)。一个数质因数分解后出现二次及以上的项则容斥系数为 \(0\)。可以结合容斥原理进行理解。

  • 容斥原理:

\[\left|\bigcup_{i=1}^{n}\right|=\sum\limits_{i=1}^{n}\left|A_{i}\right|-\sum\limits_{i, j, 1\leq i<j \leq n}\left|A_{i} \cap A_{j}\right|+\sum\limits_{i, j, k, 1 \leq i<j<k \leq n}\left|A_{i} \cap A_{j} \cap A_{k}\right|-\cdots+(-1)^{n-1}\left|A_{1} \cap A_{2} \cap \cdots \cap A_{n}\right| \]

​ 注意到其中奇数个元素的容斥系数为 \(1\),偶数个元素的容斥系数为 \(-1\)

不难发现,一个数的容斥系数即莫比乌斯函数。预处理 \(\mu\) 即可,答案即为 \(\sum\limits_{i=2}^\sqrt{n} \mu(i) \left\lfloor\frac{n}{i^2}\right\rfloor\)

[USACO08MAR]Land Acquisition G

首先,如果对于一块 \(w \times h\) 的土地,存在一块土地 \(w' \times h'\) 满足 \(w \leq w'\)\(h \leq h'\),这块土地肯定可以白嫖。

于是先把所有者样的土地扔掉(可以用栈来做),然后按 \(w\) 递增,\(h\) 递减排一遍序。

之后就是 dp,方程显然:\(f_i=\max\{f_{j-1}+w_i \times h_j\}\)

然后上斜率优化就行了。最终复杂度 \(O(n \log n)\)

Luogu P4859 已经没有什么好害怕的了

先用一年级数学知识计算出需要选出 \(x\)\(a>b\)

\(a_i\)\(b_i\) 都按照升序排一遍。令 \(cnt_i\) 表示有多少个 \(b_j\) 小于 \(a_i\)

\(dp_{i,j}\) 表示对于前 \(i\)\(a_i\),选出 \(j\) 个数并给它们各自安排一个 \(b_j\) 使得 \(b_j < a_i\) 的方案数。有

\[dp_{i,j}=dp_{i-1,j-1}\times (cnt_i-j+1) + dp_{i-1,j} \]

\(g_i = dp_{n,i} \times (n-i)!\) 表示选出 \(\geq i\)\(a > b\) 的方案总数,并且存在算重。具体地,令选出 \(x\)\(a>b\) 的方案数为 \(f_x\),则 \(f_x\)\(g_i (x \geq i)\) 中被计算了 \(\dbinom{x}{i}\) 次。

于是有

\[\begin{array}{c} g(i)=\sum_{x=i}^{n}\left(\begin{array}{c} x \\ i \end{array}\right) f(x) \\ \end{array} \]

由二项式反演:

\[f(i)=\sum_{x=i}^{n}(-1)^{x-i}\left(\begin{array}{l} x \\ i \end{array}\right) g(x) \]

就解决了。

posted @ 2020-08-02 17:27  Sqrtyz  阅读(88)  评论(0)    收藏  举报