[tokiomarine2020] Tokio Marine & Nichido Fire Insurance Programming Contest 2020
Tokio Marine & Nichido Fire Insurance Programming Contest 2020
前四题比较传统(模板),略。
D - Knapsack Queries on a tree
折半(搜索/枚举)。
这题想复杂了……
- 可以不用离线。
- 可以利用\(L\le 10^5\)。
- 可以记忆化搜索减少代码难度。
E - O(rand)
吐槽
居然真的有人用\(O(rand)\)的算法水过了这题……亲测可以被极端数据卡掉。
神仙做法
可以简化成\(S=0,T=2^k-1\)的情况。此时题目相当于求选择的数每一位既有0又有1的选法数。
设\(f(U)\)表示取不超过\(K\)个数,每个数和\(U\)的and
均相同的取法,则答案为:
\[\sum_U (-1)^{popcnt(-1)}f(U)
\]
这是因为x and U
相当于提取了x
中U
为1的位。