
树形dp
算球?
在校学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
51nod 1378 夹克老爷的愤怒(树形dp,贪心)
参考:http://blog.youkuaiyun.com/u010885899/article/details/49643471 如果还没看标程,就别看了,参考的博客里就是写的标程 首先呢,为了覆盖的点足够多,放置家丁的位置越靠近根节点越好。 然后递归,后序遍历,到叶子节点后,回溯的时候再处理,叶子节点肯定不能放家丁,那样太浪费了,所以叶子节点向父节点请求支援,这时候是-1,然后父节点继续向上请求支援,原创 2017-08-08 16:11:51 · 401 阅读 · 0 评论 -
hdu 1520 Anniversary party(树形dp)
树形dp入门题,我要入门了。 参考:http://www.cnblogs.com/kuangbin/archive/2012/08/28/2659716.html http://blog.youkuaiyun.com/shuangde800/article/details/9731725 dp[u][0]表示以u为节点的子树,不选u节点的最大值 dp[u][1]表示以u为节点的子树,选u节点的最大值dp原创 2017-08-26 18:15:09 · 228 阅读 · 0 评论 -
hdu 2196 Computer(树形dp)
给出一个计算机组成的树,这棵树是无向的。要求计算出每个节点到其他节点的最大距离。对于一个节点u来说,距离他最远的点,要么来自以他为根节点的子树,要么来自他的父节点,即整个图去掉以u为根节点的子树,距离u的父节点的最远距离再加上u与其父节点的距离。 先dfs一次,求出每个节点子树中距离他最远的距离。同时还要记录次远距离。然后再dfs一次,再更新从父节点过来的那个距离。记录次远距离就是因为在更新父节点原创 2017-08-27 08:02:35 · 291 阅读 · 0 评论 -
poj 1655 Balancing Act(树形dp)
求树的重心,如果有多个,输出编号最小的。 在树形dp题单看到了poj 1741 Tree,只会暴力搜索,不会别的办法。就搜题解,发现这是个树分治啊,怎么会在树形dp里?求解过程中涉及到了求树的重心,不会求,百度,才发现原来树形dp在求树的重心这里 树的直径、树的重心与树的点分治:http://www.cnblogs.com/zinthos/p/3899075.html#include <stdi原创 2017-08-28 19:28:48 · 331 阅读 · 0 评论 -
poj 3107 Godfather(树形dp)
树的重心。#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int MAXN = 50010;const int MAXM = 100010;struct Edge{ int to,next;}edge[MAXM];int head[MAXN];int son原创 2017-08-28 19:58:26 · 310 阅读 · 0 评论 -
poj 1741 Tree(树分治)
点分治。 如果不了解树分治的话,可以先看看09年国家集训队的论文 https://wenku.baidu.com/view/1bc2e4ea172ded630b1cb602.html https://wenku.baidu.com/view/60c6aa1ffc4ffe473368aba8.html 这两个一个pdf的,一个ppt。 参考:http://blog.youkuaiyun.com/qq_3原创 2017-08-29 17:55:56 · 361 阅读 · 0 评论 -
51nod 1737 配对(树的重心)
求出来树的重心,计算重心到每个点的距离加和。 tle了老长时间,把数组开大两倍后,就过了。 一直以为是代码矬,结果是内存开小了。调试期间还搜了别人题解,发现还有更好的做法。 我的:#include <bits/stdc++.h>using namespace std;template <class T>inline bool scan_d(T &ret){ char c;原创 2017-10-01 22:10:02 · 258 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2) D Puzzles(树形dp)
有点小失落,找以前的题做做。 参考:http://blog.youkuaiyun.com/libin66/article/details/51918509 这里边写的听详细,但是看了好久才看懂。说说我的理解。 概率或者期望一直不怎么会算,平时碰到算概率的,或者算期望的,基本就不做了。 这个题我感觉难的地方就是算期望,不过在大佬们看来这还是很水的。 在题解中,期望的计算分为了两部分,一部分是从父节点直接原创 2017-09-28 13:58:42 · 343 阅读 · 0 评论 -
Codeforces Round #364 (Div. 2) E Connecting Universities
n个城市,2k个大学,两两配对,怎么连接才能使总距离最大。 看题后首先想到先找重心,然后所有大学向重心连接的距离和就是结果。后来想想不对,万一有超过k个大学在同一个子树里,那有些就不能向重心连接了。所以呢,就不求重心了,求一个这样的点,这个点所有的子树里的大学个数<=k,然后所有大学到这个点的距离和就是结果了。#include <bits/stdc++.h>using namespace std原创 2017-10-02 20:39:09 · 248 阅读 · 0 评论