「琐记」NOIP 2020 考前
NOIP 考前听到的一些算法,如果 NOIP 失利,这些算法可能这辈子也学不到了……算是留下一点点纪念吧…
分治乘法
\((A \times 10^{base} + B) \times (C \times 10^{base} + D)\)
= $ A C 10^{base + base} + (AD + BC) 10^{base} + BD$
= $ A C 10^{base + base} + ((A + B)(C + D) - (AC + BD)) 10^{base} + BD$
复杂度为 \(\mathcal{T}(n) = 3 \times \mathcal{T}(\frac{n}{2}) + \mathcal{O}(n) = \mathcal{O}(n^{\log_2{3}}) \approx \mathcal{O}(n^{1.58})\)
分数规划例题
给出一张无向图,每个边两种权值 \((a, b)\) ,定义一棵树的权值为
\[\frac{\sum_{i \in T}\limits{a_i}}{\sum_{i \in T}\limits{b_i}}\]
求最大权值。
二分答案是什么,设二分的值为 \(L\)。
\(\frac{\sum_{i \in T}\limits{a_i}}{\sum_{i \in T}\limits{b_i}} \ge L\)
\(\sum_{i \in T}\limits{a_i} \ge L \times \sum_{i \in T}\limits{b_i}\)
\(\sum_{i \in T}\limits{(L \times b_i - a_i)} \le 0\)
将权值赋值为 \(L \times b_i - a_i\) 求最小生成树是否小于 \(0\),即可。
[国家集训队]阿狸和桃子的游戏
https://www.luogu.com.cn/problem/P4643
《一道防AK的好题》 and 《卡常数》
强制在线,数据加密对解题有帮助
CDQ 分治例题
COGS 577 蝗灾
组合数取模
- 递推一行 / 一列 考虑展开组合数通项公式,线性递推一行 / 一列
- 预处理阶乘,阶乘逆。
- Lucas 定理
- 计算 \(n!\) 中素数 \(p\) 的次数 :
calc(n) = n / p + calc(n / p)
- 非素数
CRT
合并。
第 k 小子集和
给出一个大小为 \(n\) 的集合,定义子集权值为子集元素之和,求第 \(k\) 小子集和。 \(n \le 30\),\(k < 2^{n}\) meet in the middle
。暴力求出两边 \(2^{15}\) 个值,双指针合并。
BZOJ ISN
给出长度为 \(n\) 的序列 \(A\) ,如果 \(A\) 不是递增序列,需要删除一些数字,直到为递增序列,问方案数 \(98244353\)。 动态规划 + 树状数组 + 容斥原理
Pilling Up
NULL.