「琐记」NOIP 2020 考前

📄 PDF 📝 Source

NOIP 考前听到的一些算法,如果 NOIP 失利,这些算法可能这辈子也学不到了……算是留下一点点纪念吧…

分治乘法

(A×10base+B)×(C×10base+D)(A \times 10^{base} + B) \times (C \times 10^{base} + D)

= $ A C ^{base + base} + (AD + BC) ^{base} + BD$

= $ A C ^{base + base} + ((A + B)(C + D) - (AC + BD)) ^{base} + BD$

复杂度为 T(n)=3×T(n2)+O(n)=O(nlog23)O(n1.58)\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)(a, b) ,定义一棵树的权值为

iTaiiTbi\frac{\sum_{i \in T}\limits{a_i}}{\sum_{i \in T}\limits{b_i}}

求最大权值。

二分答案是什么,设二分的值为 LL

iTaiiTbiL\frac{\sum_{i \in T}\limits{a_i}}{\sum_{i \in T}\limits{b_i}} \ge L

iTaiL×iTbi\sum_{i \in T}\limits{a_i} \ge L \times \sum_{i \in T}\limits{b_i}

iT(L×biai)0\sum_{i \in T}\limits{(L \times b_i - a_i)} \le 0

将权值赋值为 L×biaiL \times b_i - a_i 求最小生成树是否小于 00,即可。

[国家集训队]阿狸和桃子的游戏

https://www.luogu.com.cn/problem/P4643

《一道防AK的好题》 and 《卡常数》

强制在线,数据加密对解题有帮助

CDQ 分治例题

COGS 577 蝗灾

组合数取模

  • 递推一行 / 一列 考虑展开组合数通项公式,线性递推一行 / 一列
  • 预处理阶乘,阶乘逆。
  • Lucas 定理
  • 计算 n!n! 中素数 pp 的次数 : calc(n) = n / p + calc(n / p)
  • 非素数 CRT 合并。

第 k 小子集和

给出一个大小为 nn 的集合,定义子集权值为子集元素之和,求第 kk 小子集和。 n30n \le 30k<2nk < 2^{n} meet in the middle。暴力求出两边 2152^{15} 个值,双指针合并。

BZOJ ISN

给出长度为 nn 的序列 AA ,如果 AA 不是递增序列,需要删除一些数字,直到为递增序列,问方案数 9824435398244353。 动态规划 + 树状数组 + 容斥原理

Pilling Up

NULL.