[tokiomarine2020] Tokio Marine & Nichido Fire Insurance Programming Contest 2020

Tokio Marine & Nichido Fire Insurance Programming Contest 2020

前四题比较传统(模板),略。

D - Knapsack Queries on a tree

折半(搜索/枚举)。

这题想复杂了……

  1. 可以不用离线。
  2. 可以利用\(L\le 10^5\)
  3. 可以记忆化搜索减少代码难度。

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相当于提取了xU为1的位。

精简的实现

posted @ 2021-05-20 21:02  frank3215  阅读(95)  评论(0编辑  收藏  举报