摘要: 考虑从最后的队形开始依次还原最初的队形。 对于当前的队形,要么选最左边的,要么选最右边的。 如果选了左边的,那么下次选择的一定是大于它的。右边的同理。 所以定义dp[mark][l][r]为区间[l,r]的选择状态为mark的方法数。 然后记忆化搜索一下就可以了。 # include <cstdio 阅读全文
posted @ 2017-03-30 21:11 free-loop 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 答案是具有单调性的。 因为最近的两个部落的距离为mid,所以要是有两个野人的距离<mid,则他们一定是一个部落的。 用并查集维护各联通块,如果最后的联通块个数>=k,那么mid还可以再小点。如果<k,mid还可以再大点。 二分搞一搞就行了。 # include <cstdio> # include 阅读全文
posted @ 2017-03-30 18:24 free-loop 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 很水的DP。 因为每一个餐车的加入只需要知道当前矿洞的前两个餐车种类就行了。而餐车一共就三种。 所以令dp[i][Sa][Sb]表示前i辆餐车送餐完毕后第一个矿洞的前两个餐车种类为Sa,第二个矿洞的前两个餐车种类为Sb的最大产矿量。 滚动数组优化一下,然后搞一搞就行了。 # include <cst 阅读全文
posted @ 2017-03-30 17:55 free-loop 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定一张无向图,每条路的长度都是1,没有自环,可能有重边,给定起点与终点,求从起点走t步到达终点的方案数。 每一步走的时候要求不能走上一条刚刚走的路。 解析: 显然需要搞出个矩阵之后矩乘。 然而这题的要求就很烦,要不然就是SB题了2333. 但是我们可以换一个想法来做。 题目要求不走上一条来 阅读全文
posted @ 2017-03-30 16:34 free-loop 阅读(152) 评论(0) 推荐(0) 编辑