做题记录 25.10.2

\(\textcolor{black}\odot\) P9339 [JOIST 2023] 曲奇 / Cookies

得知 \(\sum c_i\) 后,分配方案是容易的,只要每次取数量最多的一种即可(同一组内不可重复),因此考虑如何求出 \(c_{1\sim x}\)

假定 \(c\) 不降,则 \(c_{1\sim x}\) 合法当且仅当 \(\forall i\le x,\sum_{j\le i}c_j\le \sum_j \min(a_j,i)\)

\(O(n\log n)\)(容易优化到线性,但不是瓶颈)预处理 \(\sup_i=\sum_j \min(a_j,i)\)

\(b\) 从大到小排序,令 \(f_{i,j,k}\) 表示 \(b_{1\sim i}\) 中选择了 \(j\) 次,总和能否为 \(k\),则

\[f_{i,j,k}\to f_{i+1,j,k}\\ f_{i,j,k}\to f_{i,j+1,k+b_i} \]

显然 \(j\le \frac{s}b_i\)(其中 \(s=\sum a\)),总和不超过 \(O(s\ln n)\)

每个 \(f_{i,j,\ast}\) 压为一个 bitset,则时间复杂度 \(O(\frac{s^2\ln n}\omega)\)

构造方案是容易的

代码

参考

posted @ 2025-10-03 08:05  Hstry  阅读(4)  评论(0)    收藏  举报