摘要: 【题解】 显然是个多重背包。但直接写背包会超时。所以我们试着优化。 怎么优化?我们发现,每个物品的个数$ai$可以拆分成几个数的和,用这些数中的某几个之和可以表示出$1$到$ai$的所有整数,并且不会超过$ai$ 这样我们可以把ai个相同的物品拆分成若干个互相独立的物品,然后跑01背包。 那么如何对 阅读全文
posted @ 2018-01-22 20:38 Driver_Lao 阅读(853) 评论(0) 推荐(0) 编辑
摘要: 推荐两个讲得很好的博客: http://blog.sina.com.cn/s/blog_70811e1a01014esn.html https://segmentfault.com/a/1190000003914228 1 #include<cstring> 2 #include<cstdio> 3 阅读全文
posted @ 2018-01-22 14:16 Driver_Lao 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 【题解】 容易想到用线段树维护,但是无脑开T棵线段树会导致时间超限。怎么办呢?我们可以把一个区间的状态用30位2进制数表示。第$i$位为$1$表示这个区间有第$i$种颜色,为$0$表示没有。 这样我们只需要维护区间或的结果,并支持区间设为一个数即可。 1 #include<cstdio> 2 #in 阅读全文
posted @ 2018-01-22 13:45 Driver_Lao 阅读(153) 评论(0) 推荐(0) 编辑