摘要: "题目链接" 满分做法: 树可以分为所有节点度数都是奇数和至少有一个节点度数是偶数。对于第一个状态,一定转移到第二个状态;而第二个状态一定可以转移到第一个状态(一定存在一个偶节点删除后他和他的子树成为第一个状态)。 这样当先手局面为全奇时,只能变为第二个情况,后手总能把情况再变回第一个,这样最后先手 阅读全文
posted @ 2019-11-06 14:42 lihan123 阅读(160) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 满分做法: 考虑DP,dp[i]表示表示前i个符合条件的最小合并次数,再记录一个minn[i]表示仅考虑前 i 朵小花,在操作次数最少的前提下,最终合并得到的最右的小花的最低美丽值。 倒叙转移,保证最小合并次数的前提下,最右值最小。 阅读全文
posted @ 2019-11-06 10:04 lihan123 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 其实就是二分+奶酪那个题,二分不合法的情况为左边界联通到下边界和右边界,上边界连接到下边界和右边界。 阅读全文
posted @ 2019-11-06 09:03 lihan123 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 本题采用贪心:分出来的区间一定是单调的,因为如果不满足单调可以拆分出单调的使答案更大。DP转移时考虑极值的归属 cpp include include include include include include using namespace std; typedef long lo 阅读全文
posted @ 2019-11-04 20:17 lihan123 阅读(207) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 满分做法: 在做搜索 最短路路径时 可以从终点搜到起点,记录该位置到终点的最短路,再次搜索时从起点搜索并判断即可。 本题还要比较颜色的字典序,于是我们把当前深度的点都拿出来,进行向外扩展,找到既在最短路径上,又经过颜色字典序最小的点,加入到队列中,并把当前颜色最小值加入到答案序列即可。 阅读全文
posted @ 2019-10-31 16:28 lihan123 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 换根dp的通法:1.第一次扫描时,任选一个点为根,在“有根树”上执行一次树形DP,也就在回溯时发生的,自底向上的状态转移。 2.第二次扫描时,从刚才选出的根出发,对整棵树执行一次dfs,在每次递归前进行自上向下的推导,计算出换根后的解。 例题POJ3585 Accumulation Degree d 阅读全文
posted @ 2019-10-30 15:53 lihan123 阅读(1931) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 满分做法: 将正反两面连边,发现如果一个连通块的变数 =n条时,那么这个连通块一定能满足保证每个面值都能够被提供至少一次。如果它是一棵树,无论怎么调整,都会漏掉一个面值无法打出。 于是最后询问的就是一个线段中是否包含一个完整的限制线段(他的起点为一棵树中编号最小的,终点为最大的),这个 阅读全文
posted @ 2019-10-30 14:34 lihan123 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 85分做法: 利用优先队列找出最大的蚯蚓,再用懒标记去计算增长的长度即可( 除了那被切成的两只蚯蚓其他的都往正方向移动了一些, 等价于那两只往负方向移动了一些. 所以可以记录累计加的长度, 有几只没被加的就减去就好了) 满分做法: 发现先被切掉的蚯蚓分成的蚯蚓一定比后切掉的蚯蚓分成的蚯蚓大,所以直接 阅读全文
posted @ 2019-10-26 09:21 lihan123 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 30分做法: 三进制枚举,暴力模拟即可。 阅读全文
posted @ 2019-10-25 20:55 lihan123 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 满分做法: 对于有全对的时候,直接枚举每个人的答案为最终答案,判断和他完全相反的字符串是否为p个即可。 对于没有全对但有全错的时候,枚举每个答案为错误答案,并判断和他完全相反的字符串是否有即可。 对于p,q都是0时,先假定全是N(保证字典序最小),然后判定有无,无的话直接输出;有,就二进制枚举后面Y 阅读全文
posted @ 2019-10-24 21:35 lihan123 阅读(108) 评论(0) 推荐(0) 编辑