摘要: "Description" 思路 当总长为n,block长度为k时,把k看成一个整体,那么求k的个数相当于求总长为n k+1时,block长度为1的个数。 假设dp[n]代表的是总长为n中block长度为1的个数。我们要求的就是这个dp 1到n的值。 求block长度为1的个数,就是把总的情况数,减 阅读全文
posted @ 2020-04-29 22:46 limil 阅读(124) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 由于$a_i$的取值非常小,所以把每个值所在坐标从小到大存起来。然后枚举每个$a_i$为回文的左右边界可得的最大长度。 枚举过程中,求两个$a_i$形成的区间中包含的重复次数最多的数。由于区间越大,重复的个数越多,所以从$a_i$的最左右两边到中间枚举。 统计区间某 阅读全文
posted @ 2020-04-29 22:36 limil 阅读(97) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 这题的思想有点类似求树的重心。 首先思考一下如果只要求一个点的差值。那么显然,将这个点看作根节点,然后只要dfs一下,将与它连接的所有子树中各个最大差值求个和就是答案。 在dfs的过程中把每个结点的求的值记录下来,那么对于每个结点,下面的最大差值都已经求好了,就剩下 阅读全文
posted @ 2020-04-29 22:27 limil 阅读(95) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 题目只对向上走有限制,但是对左右走没有限制,所以可以将宝藏的位置按照行处理。 由于每个宝藏都要遍历到,记录每一行左右两个端点的宝藏。我猜了一个贪心就是每到一行从一个端点走到另一个端点路程最短,不能从中间往两边走。 所以按照每一行判断上一行的左端点到这一行的右端点,或 阅读全文
posted @ 2020-04-29 22:12 limil 阅读(126) 评论(0) 推荐(0) 编辑