
树状dp
文章平均质量分 60
a1s4z5
这个作者很懒,什么都没留下…
展开
-
SRM 682 Div2 1000 SubtreesCounting
题面:定义一个树的valuevalue为树的所有联通子图的节点数之和 求给出的一个树的valuevalue感觉很巧妙的一个树dp树dp因为是一个无根树,不妨把0号节点提起来作为根,记TxT_x为以xx为根节点的子树定义 SxS_x为在TxT_x中选择xx的valuevalue 定义CxC_x为在TxT_x中选择xx的联通子图的个数那么,考虑给每次新#include <bits/stdc++.h原创 2016-03-03 18:35:16 · 394 阅读 · 0 评论 -
poj 2486 Apple Tree
给出一个树,每次跨过一条边记做走一步,可以往回走,每个点有一些苹果,问从根出发在kk步之内最多能拿到多少苹果对于每一个节点,我们记VgoxVgo_x为从这个点出发走x步不回到这个点最多能拿到的苹果数VbackxVback_x为从这个点出发走x步回到这个点最多能拿到的苹果数ValVal为这个点上的苹果数对于每个点,能不走就拿到的苹果数目其实就是这个点的苹果数也就是Vgo0=Vback0=ValVgo_原创 2016-05-24 18:19:40 · 301 阅读 · 0 评论 -
bzoj 2152 聪聪可可
简单的树dp记录到该节点的路径权值xx ,x(mod3)=vx\pmod{3} = v的点的个数,然后就可以轻松的转移了#include<bits/stdc++.h>using namespace std;const int maxn = 21234;vector<pair<int,int> >edge[maxn];void init(int n){ for(int i=0;i<=n;i原创 2016-05-13 17:16:43 · 381 阅读 · 0 评论 -
hdu 5735 Born Slippy
hdu 5739 Fantasia偷偷放上题解 -by zimpha 感谢叉姐在ICPCCamp上出的这道题最初的原型 – Data Structure You’ve Never Heard Of, 同样感谢Claris老师的教导. 由于and, or和xor方法都差不多, 这里仅考虑and操作. 不妨令dp(s)=f(s)−wsdp(s)=f(s)-w_s, 我们大概要求的就是dp(i)原创 2016-07-25 10:46:31 · 568 阅读 · 0 评论 -
Poj 1947 Rebuilding Roads
树dp+背包考虑是否加入子树k 时间复杂度O(n3)O(n^3)#include<cstdio>#include<vector>#include<algorithm>#include<cstring>using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 200;vector<int> edge[maxn];int原创 2016-07-18 09:16:27 · 242 阅读 · 0 评论 -
poj 2057 The Lost House
论文题,树dp多说两句,这个题的决策是在一个节点时选择子节点遍历的顺序通过贪心来优化dp#include<cstring>#include<cstdio>#include<vector>#include<cstring>#include<algorithm>using namespace std;const int maxn = 1123;vector<int> edge[maxn];vo原创 2016-07-18 21:26:36 · 286 阅读 · 0 评论 -
bzoj 3238 差异
给出一个长n的字符集为小写字母的字符串,求∑1≤i<j≤nlen(Suffixi)+len(Suffixj)−2×len(lcp(Suffixi,Suffixj))\sum \limits _{1 \le i < j \le n} len(Suffix_i) + len(Suffix_j) - 2 \times len(lcp(Suffix_i,Suffix_j)) SuffixxSuffix_x原创 2016-09-07 19:35:41 · 481 阅读 · 0 评论 -
Hdu 5909 Tree Cutting
n(n≤1000)n(n\le 1000)个点的树上每个点有一个权值(0≤Ci<m,m≤210)(0\le C_i < m,m\le 2^{10}),定义一个子树的权值为这个子树节点的权值的异或。分别求权值为[0,m−1][0,m-1]的子树的个数mod(109+7)mod(10^9+7)对于一个无根树的子树,如果我们钦定一个点作为无根树的根,那么对于这个树的所有子树都可以钦定出唯一的一个点作为根。原创 2016-10-02 23:20:15 · 967 阅读 · 0 评论 -
Codeforces 349D - Apple Tree
有一个有根树,每个叶子节点都有一定量的苹果(可能为0),非叶子节点上没有苹果。一个节点的重量定义为在以这个节点为根的子树内的节点的苹果个数和。对于一个节点称它是平衡的当且仅当这个节点的每个子节点的重量都相等。问最小需要拿走多少个苹果才能令所有节点都平衡。假设我们已经将一个子树拿成了平衡的,这个子树的父节点需要这个子树继续拿走苹果的时候,苹果是一份一份拿的,一份中含有的苹果的个数依赖于这个子树的形态。原创 2016-11-02 11:32:06 · 585 阅读 · 0 评论