随笔分类 -  dp--树形dp

摘要:洛谷P3177 bzoj4033 根本不会做。。。 上网查了题解,发现只要在状态定义的时候就考虑每一条边全局的贡献就好了? 考虑边的贡献和修改状态定义我都想到了,然而并不能想到要结合起来 ans[i][j]表示i子树中选j个黑色节点,最大的贡献和 容易知道:每一条边的贡献为 长度*(边一侧的白点数* 阅读全文
posted @ 2018-10-25 14:21 hehe_54321 阅读(122) 评论(0) 推荐(0)
摘要:https://www.luogu.org/problemnew/show/P4362 首先有个很显然的dp:ans[i][j][k]表示i节点用j号头,i节点为根的子树中共有k个点用大头时i节点为根的子树内的最小答案 可以发现复杂度不太对。。 研究一下,可以发现:如果没有大头的限制,且有>=2个头 阅读全文
posted @ 2018-09-09 18:50 hehe_54321 阅读(241) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-04-17 22:30 hehe_54321 阅读(2) 评论(0) 推荐(0)
摘要:Kay and Snowflake CodeForces - 686D 题意:给一棵有根树,有很多查询(100000级别的),查询是求以任意一点为根的子树的任意重心。 方法很多,但是我一个都不会 重心几个定义/性质: 1.从树中去掉某点以及和该点相连的所有边后,整棵树变为许多"块"。去掉任意一个重心 阅读全文
posted @ 2018-03-14 14:46 hehe_54321 阅读(351) 评论(0) 推荐(1)
摘要:Apple Tree POJ - 2486 题目大意:一棵点带权有根树,根节点为1。从根节点出发,走k步,求能收集的最大权值和。 树形dp。复杂度可能是O(玄学),不会超过$O(nk^2)$。(反正这题不卡这个,考思想)参考 ans[i][j][0]表示i点以下共走j步,不回来,可能收集到最大的权值 阅读全文
posted @ 2017-11-09 07:47 hehe_54321 阅读(300) 评论(0) 推荐(0)
摘要:树上最远点对(树的直径) 做法1:树形dp 最长路一定是经过树上的某一个节点的。 因此: an1[i],an2[i]分别表示一个点向下的最长链和次长链,次长链不存在就设为0;这两者很容易求 an3[i]表示i为根的子树中的答案;an3[u]=max(max{an3[v]}(v是u的子节点),an1[ 阅读全文
posted @ 2017-11-08 17:48 hehe_54321 阅读(339) 评论(0) 推荐(0)
摘要:Computer HDU - 2196 题意:求以树上任一点为端点的最长链。注意,读入的不是边表,而是每个节点(除了1号,它是根节点)的父亲和与父亲间边的长度。 方法: 从每个端点出发的最长链,第一种是向下(向子节点)走,第二种是向父节点走。分别处理即可。(具体看程序) (感觉做法一点也不优美... 阅读全文
posted @ 2017-10-27 20:30 hehe_54321 阅读(304) 评论(0) 推荐(0)
摘要:Helga Hufflepuff's Cup CodeForces - 855C 题意:给一棵n个节点的树,要给每一个节点一个附加值,附加值可以为1-m中的一个整数。要求只能有最多x个节点有附加值k。如果某个节点的附加值是k,那么与其直接相连的点的附加值都必须小于k。求给整棵树的点赋附加值时满足要求 阅读全文
posted @ 2017-09-27 18:46 hehe_54321 阅读(557) 评论(0) 推荐(0)
摘要:Distance in Tree CodeForces - 161D 题意:给一棵n个结点的树,任意两点之间的距离为1,现在有点u、v,且u与v的最短距离为k,求这样的点对(u,v)的个数((u,v)/(v,u)算一对)。 方法: ans[i][k]表示与i结点距离为k的子结点个数 ans[i][k 阅读全文
posted @ 2017-09-14 15:58 hehe_54321 阅读(478) 评论(3) 推荐(1)
摘要:((半个)智商题,主要难度在于实现) 题意:有一棵n个结点组成的树,其根是编号为1的结点。对于每一个结点,生成从根结点走到这个结点的路径(包括自身),选择路径上的一个点或者不选择任何点,使得其它点的最大公约数最大。每一个结点要分开考虑。 曾经错误做法: ans[x][0]表示走到x点不选择任何点的最 阅读全文
posted @ 2017-09-05 21:05 hehe_54321 阅读(268) 评论(0) 推荐(0)
摘要:题目 网上出现了一种高科技产品——人品测试器。只要你把你的真实姓名输入进去,系统将自动输出你的人品指数。把儿不相信自己的人品为0。经过了许多研究后,把儿得出了一个更为科学的人品计算方法。这种方法的理论依据是一个非常重要的结论:人品具有遗传性。因此,一个人的人品完全由他的祖先决定。把儿提出的人品计算方 阅读全文
posted @ 2017-08-09 16:32 hehe_54321 阅读(231) 评论(0) 推荐(0)
摘要:***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u][0]=sum{min(dp[v][0],dp[v][1])}+1dp[u][1]表示u不是服务器 阅读全文
posted @ 2017-08-07 17:32 hehe_54321 阅读(207) 评论(0) 推荐(1)
摘要:c表示某上司上报的最少请愿下属,k表示总下属c=0.01T*k=kT/100(0.01T*k是整数)c=[0.01T*k]+1=[kT/100]+1(0.01T*k不是整数) kT=100 c=1 kT=101 c=2 因此c=[(kT-1)/100]+1 阅读全文
posted @ 2017-08-07 17:30 hehe_54321 阅读(124) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 map nameCache; 9 int nowID,n; 10 string boss; 11 struct Edge 12 { 13 int to,next; ... 阅读全文
posted @ 2017-08-07 17:28 hehe_54321 阅读(194) 评论(0) 推荐(0)

AmazingCounters.com