摘要: 原题链接 考察:记忆化搜索 太菜了太菜了,说实话本蒟蒻完全没看出来为什么要用记忆化搜索.T了两次算了搞明白了点. 假定数据: a = aaa,b = aaa, c = aaaaaw. 很容易看出答案是错的,但是dfs会不断搜索,在返回的时候,用了b一个字符会在优先使用a一个字符.而此状态被搜索过,因 阅读全文
posted @ 2021-02-17 23:48 acmloser 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:记忆化搜索 15min内WA 6次,不愧是我 思路: 按题目意思走即可. 坑点: 记忆化数组的n必须开很大,否则WA.因为在m>0&&n>0内,m每减一次1,n就要累加一次和. 可能要开long long, 1 #include <iostream> 2 #include <cstr 阅读全文
posted @ 2021-02-17 20:31 acmloser 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:记忆化搜索 思路: 可用递推和记忆化搜索两种方式. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 using namespace std; 6 const 阅读全文
posted @ 2021-02-17 19:46 acmloser 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp+约数 思路: 预处理约数之和,用倍数法,时间复杂度10^6次方左右,sum[i]<i的建立边.通过打表可知是不止一棵树,也就是数字建立的图是森林.对于遍历过的点标记一下,没标记的遍历即可.最后就是求树的直径. 倍数法中:j枚举了i的倍数 1 #include <iostre 阅读全文
posted @ 2021-02-17 18:18 acmloser 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp+二分 这道题正解思路有点像二分典型题搬石头.本蒟蒻是没想出来... 思路: 这道题有3个限制条件: 裁取的边要使得叶子不能到1. 裁取的边和要<=m 裁取的边的权值要尽量小. 直接递推根本递推不出来,如果设置叶子节点的f[u] = INF,那么叶子结点到父节点之间的边权值一 阅读全文
posted @ 2021-02-17 16:36 acmloser 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形背包dp 本来不想写这篇的题解,因为和前面的题重复了...但是WA了3次才对,还是写一下吧.. 思路: 将每20个虫子看成财宝的一个体积.m是背包的体积.这就是带体积的树形背包问题了.但是要注意的是,当某个洞穴虫子=0,我们还需要派人去拿.这个处理很简单,让f[u][0]=0就可 阅读全文
posted @ 2021-02-17 14:16 acmloser 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 树的重心变种题 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。(不止一个) 模板题 树的重心 思路: 把树的某个点删去后,剩余部分是不包含父节点的子节点连通块.已经删去点的父节点连通块.通过dfs可以求出 阅读全文
posted @ 2021-02-17 12:36 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 本蒟蒻是完全没思路,看了网上的题解思路普遍是: 对于一棵树,每拆掉一条边就形成一条链.对于一个有多子节点的结点u,我们可以保留父节点到u的边和u到一个子节点的边.也可以保留两个子节点的边去掉其他的边.看了大部分题解都是默认去掉父节点边是最优解. 本蒟蒻是没想出来证明 = = 阅读全文
posted @ 2021-02-17 01:22 acmloser 阅读(21) 评论(0) 推荐(0) 编辑