
树形DP
文章平均质量分 66
commonc
这个作者很懒,什么都没留下…
展开
-
BZOJ4379: [POI2015]Modernizacja autostrady
题目大意:给定一棵无根树,边权都是1,去掉一条边并加上一条新边,输出所有可能的新树的直径中的最小值和最大值一看就知道肯定是treeDP了我们可以考虑对于每一条边,假设把它删掉,会得到两棵小树此时新树的最大直径肯定是把两个小树的直径连起来,使得L=L1+L2+1而最小直径肯定是连接两个直径的中点,使得L≈max(L1,L2)所以我们需要得知对于每条边两边的小树的直径分别是原创 2016-04-30 18:38:46 · 1394 阅读 · 0 评论 -
BZOJ3420: Poi2013 Triumphal arch
题目大意:给一颗树,1号节点已经被染黑,其余是白的,两个人轮流操作,一开始B在1号节点,A选择k个点染黑,然后B走一步,如果B能走到A没染的节点则B胜,否则当A染完全部的点时,A胜。求能让A获胜的最小的k 首先易知B不会走回头路,走回头路代表自己毫无贡献还让A多染了两次色所以B的路径就是从根到叶子节点先二分一下答案转成判定性问题然后TreeDP,f[i]表示当B现在在i时,需要原创 2016-05-29 13:30:18 · 1032 阅读 · 0 评论 -
BZOJ3872: [Poi2014]Ant colony
题目大意:给一棵树,对于每个叶子节点,都有g群蚂蚁要从外面进来,每群蚂蚁在行进过程中只要碰到岔路,就将平均地分成岔路口数-1那么多份,然后平均地走向剩下的那些岔路口,余下的蚂蚁自动消失,树上有一个关键边,假如有一群蚂蚁通过了这条边且数量恰好为k,这k只蚂蚁就被吃掉,问一共有多少只蚂蚁被吃掉显然得从那条关键边倒着推以这条边作为这棵树的“根”,开始遍历其他的边,遍历到每条边的时候计算一原创 2016-05-18 19:13:59 · 1039 阅读 · 0 评论 -
BZOJ2526: [Poi2011]Inspection
题目大意:给定一颗n个节点的树,要求求出从每个节点开始的遍历最小代价。一次遍历是指,每次从这个点出发去一个点再回来,代价是这条边边权*2,相邻两次选择的点对于这个点来说不能在同一颗子树里,最后一次可以不用回来,总代价就是每次出去再回来的代价之和刚一看题,这不SB题吗,一个treeDP维护出来最长链次长链不就完事了吗,每次从一个点转移过来的时候就各种讨论一下就好了判断误无解的时候,只原创 2016-07-09 10:27:10 · 963 阅读 · 0 评论 -
BZOJ3522&4543: [POI2014]Hotel加强版
题解见http://blog.youkuaiyun.com/neither_nor/article/details/51278993不知道这是什么狗题,时间复杂度貌似是O(N)#include#include#include#define M 3000010#define N 200010using namespace std;long long wa[M];long long *f[N转载 2016-05-11 19:13:23 · 2126 阅读 · 0 评论 -
BZOJ4784: [Zjoi2017]仙人掌
题目大意:给你一个无重边无自环的无向连通图,问有多少种加边方法,使得加完边之后这个图是一个仙人掌好像蛮厉害的一个题我们把仙人掌想象成DFS树+返祖边,显然返祖边连接的两个点之间的路径不能有交因为题目中说了不能有重边,所以我们可以想象把最后仙人掌的那些“桥”又连了一条边,这样就变成了我们要把DFS树上所有的边都用“返祖边两点之间的路径”来覆盖这个我们可以怎么做呢?原创 2017-03-29 14:44:53 · 1496 阅读 · 0 评论