摘要: 用pair写dp, 有种新鲜的感觉. 就是状压dp, pair第一维记录用了几个电梯, 第二维记录还剩多少空间, 取min转移即可. 用pair主要是为了使代码简洁. cpp include include include include include using namespace std; t 阅读全文
posted @ 2018-10-19 20:17 俺是小程 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 难得一见的换根法(肯定是我题目做少了吧) 首先考虑直接暴力dp, 设状态为 $f[i][k]$, 表示第i个节点走k步的总数. 然后就能求出节点1的答案了. 可惜这样不够. 我们要求的是所有节点的答案. 而换一个节点作为根重新跑dp的话复杂度为 $O(KN^2)$, 显然不现实. 考虑从已知答案的节 阅读全文
posted @ 2018-10-19 19:24 俺是小程 阅读(179) 评论(1) 推荐(0) 编辑
摘要: 想到了一个二分 + 线段树检验的方法. 就是二分长度, 然后用线段树记录最小&最大值, 暴力扫一遍查询. 但是这样复杂度貌似是 $O(N(logN)^2)$ 的, 太菜了. 按照以往的经验, 凡是想到这样的思路多半可以用单调队列优化, 一个队列维护最小值, 一个维护最大值就ok. 阅读全文
posted @ 2018-10-19 09:06 俺是小程 阅读(165) 评论(0) 推荐(0) 编辑