摘要: 这道题题意不想说了,跑了640ms,感觉水过去了,应该能通过单调队列优化,很长时间没碰已经不知道怎么写了,就说说现在的写法吧。 状态定义很关键:dp[i][j]把前j个topic放在前i堂课. 因为这道题中的topic不能跳,必须按顺序,那么我们可以用贪心先求出最少的课程数,凭感觉证明这个贪心的做法是准确的,且找不到反例。 然后根据dp前后状态递推方程: dp[i][j]=max(dp[i... 阅读全文
posted @ 2015-11-01 16:42 acliang 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 1到6的卡分别各有有限制的张数,问能不能恰好分,总张数不能超过20000. 很明显是多重背包问题,上去果写了个三重循环,然后就T了,重新打开背包九讲,找到了多重背包的二进制拆分优化,把其中一维n的复杂度简化为logn的复杂度。 二进制拆分优化:就是1,2,4,2^k(满足和小于分解数最大的k),二进制优化可行的原因,因为可以用二进制数表示任意不同小于等于k的数。 注意:数组不要开小,RE了 ... 阅读全文
posted @ 2015-11-01 16:21 acliang 阅读(313) 评论(0) 推荐(0) 编辑