计数题刷题单

计数题刷题单

题单:简单计数题

P6146 [USACO20FEB] Help Yourself G

分析

考虑如果我选择一条线段把它插入一个集合:

  1. 我和某一条线段相交,复杂度不变
  2. 不和某一条线段相交,则复杂度加一

所以考虑到是否相交和这条线段的左端点和集合最大右端点有关,我可以考虑将线段按照右端点排序。

\(f_i\) 是选择了第 i 个,前面怎么选不知道,复杂度之和,同时设 \(g_i\) 是子集个数。
那么有显然的转移:

\[f_i = 2^{i - ans - 1}\sum_{r_j < l_i} {f_j + g_j} \]

前缀和转移。