专栏文章

不想动脑子 || solution - CF294B

CF294B题解参与者 6已保存评论 5

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
5 条
当前快照
1 份
快照标识符
@miplk6h8
此快照首次捕获于
2025/12/03 13:59
3 个月前
此快照最后确认于
2025/12/03 13:59
3 个月前
查看原文
为什么题解区都是这么难理解的 dp 做法呀……
但是我不想动脑子。

Solution 1

显然我们在设状态的时候可以添加限制,设 fi,jf_{i,j} 为前 ii 都必须选,下层厚度之和为 jj,这时上层宽度之和的最小值。转移考虑一本书放在上层还是下层即可,有式子:
fi,j=min{fi1,j+wifi1,jtif_{i,j} = \min \begin{cases} f_{i-1,j} + w_i \\ f_{i-1,j-t_i} \end{cases}
答案就是最小满足 jfjj \ge f_jjj
时间复杂度 O(n2)O(n^2)

Solution 2

还有一个更无脑的做法,甚至复杂度更优秀。
发现 tit_i 的取值只有 1,21,2,所以当下层厚度之和确定的时候,是容易计算上层最小宽度的。具体地,按照 tit_i 的取值分开,然后分别排个序,贪心把宽度大的放到下面,双指针维护即可。
于是就可以二分答案了,复杂度只有 O(nlogn)O(n \log n)

华风夏韵,洛水天依!

评论

5 条评论,欢迎与作者交流。

正在加载评论...