随笔分类 -  动态规划 树形DP

摘要:【题目】H. Ember and Storm's Tree Game 【题意】Zsnuoの博客 【算法】动态规划+排列组合 【题解】题目本身其实并不难,但是大量干扰因素让题目显得很神秘。 参考:Zsnuoの博客 一、首先Ember必胜(考虑n个点连成一条链),故合法的树一定满足先手必胜。当Storm 阅读全文
posted @ 2018-03-28 22:38 ONION_CYC 阅读(483) 评论(0) 推荐(0)
摘要:【题目】#2124. 「HAOI2015」树上染色 【题意】给定n个点的带边权树,要求将k个点染成黑色,使得 [ 黑点的两两距离和+白点的两两距离和 ] 最大。n<=2000。 【算法】树上背包 【题解】设f[i][j]表示子树i中有j个黑点对答案的贡献(包括点 i 到父亲的边 p ),由于边p的贡 阅读全文
posted @ 2018-03-13 09:24 ONION_CYC 阅读(311) 评论(0) 推荐(0)
摘要:【题意】n个人,每个人有价值ai和代价bi和一个依赖对象ri<i,选择 i 时 ri 也必须选择(ri=0时不依赖),求选择k个人使得Σai/Σbi最大。n<=2500,ai,bi<=1e4。 【算法】01分数规划+树上背包 【题解】首先二分答案ans,根据01分数规划赋新的权值ci=ai-ans* 阅读全文
posted @ 2018-03-12 20:20 ONION_CYC 阅读(316) 评论(0) 推荐(0)
摘要:【题意】给定n个点的带边权树,每次询问给定ki个特殊点,求隔离点1和特殊点的最小代价。n<=250000,Σki<=500000。 【算法】虚树+DP 【题解】考虑普通树上的dp,设f[x]表示隔离1和子树x内特殊点的最小代价,val[x]表示x到1路径上的最小代价(预处理)。 点x特殊,f[x]= 阅读全文
posted @ 2018-02-25 21:09 ONION_CYC 阅读(254) 评论(0) 推荐(0)
摘要:【题目】D. Roads in Yusland 【题意】给定n个点的树,m条从下往上的链,每条链代价ci,求最少代价使得链覆盖所有边。n,m<=3*10^5,ci<=10^9,time=4s。 【算法】树形DP+线段树||可并堆 【题解】从每条边都需要一条链来覆盖的角度出发,令f[i]表示覆盖子树 阅读全文
posted @ 2017-12-22 11:44 ONION_CYC 阅读(695) 评论(0) 推荐(0)
摘要:【题目】E - Smuggling Marbles 【题意】给定n+1个点的树(root=0),每个点可以选择放或不放弹珠,每一轮顺序进行以下操作: 1.将根节点0的弹珠加入答案。 2.每个点的弹珠移向父亲。 3.如果一个点有超过2个弹珠,全部丢掉。 如果树中仍有弹珠,继续下一轮。 共有2^(n+1 阅读全文
posted @ 2017-12-11 22:04 ONION_CYC 阅读(632) 评论(0) 推荐(1)
摘要:【算法】树形DP 【题解】没有上司的舞会?233 f[x][0]=∑max(f[v][0],f[v][1]) f[x][1]=(∑f[v][0])+1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std 阅读全文
posted @ 2017-09-26 16:09 ONION_CYC 阅读(202) 评论(0) 推荐(0)
摘要:【算法】基环树DP 【题意】给定若干有向基环树,每个点能走的最远路径长度。 【题解】 参考:【BZOJ1589】Trick or Treat on the Farm 基环树裸DP by 空灰冰魂 考虑DAG上DP,令f[x]表示点x开始能到达的最远长度,则f[x]=f[y]+1,x >y。 环套树最 阅读全文
posted @ 2017-09-21 21:33 ONION_CYC 阅读(235) 评论(0) 推荐(0)
摘要:【算法】树型DP 【题意】给定含n个点的树的形态,和n个数字Xv,要求给每个点赋予黑色或白色和权值,满足对于每个点v,子树v中和v同色的点的权值和等于Xv。n<=10^5 【题解】首先每个点的权值可以任意大,那么v的子树(不含v的部分)权值多少就无所谓了(因为缺的可以由v来补足),但是太大的话超过X 阅读全文
posted @ 2017-09-18 07:36 ONION_CYC 阅读(762) 评论(0) 推荐(2)
摘要:【算法】树型DP||树的重心(贪心) 【题解】 两遍DFS,第一次得到所有节点子树的路径和,第二次给出除了该子树外其它部分的路径和,时时计算答案。 long long!!! #include<cstdio> #include<cstring> #include<algorithm> #include 阅读全文
posted @ 2017-08-30 18:29 ONION_CYC 阅读(210) 评论(0) 推荐(0)
摘要:【算法】树型DP+期望DP 【题意】一棵树上每个点均有直接充电概率qi%,每条边有导电概率pi%,问期望有多少结点处于充电状态? 【题解】引用自:【BZOJ3566】【SHOI2014】概率充电器 树形DP 概率DP by 空灰冰魂 最大的难点在于计算每个点充电期望时,两个节点各自的期望都会影响对方 阅读全文
posted @ 2017-07-23 11:29 ONION_CYC 阅读(283) 评论(0) 推荐(0)
摘要:【动态规划杂记】状态+转移 参考:夜深人静写算法(二) - 动态规划 核心:划分阶段-状态表示-状态转移方程。 复杂度:状态数O(n^t),转移O(n^e),则称为tD/eD问题。 1.最优化问题和方案数问题常考虑DP,特定数问题不考虑DP。 2.断层思想:划分状态,从计算过的状态去答案,这就是无后 阅读全文
posted @ 2016-11-29 14:17 ONION_CYC 阅读(1937) 评论(0) 推荐(1)
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡 阅读全文
posted @ 2016-08-10 21:08 ONION_CYC 阅读(2144) 评论(0) 推荐(6)
摘要:Day1 T1(暴力):大水题 #include<cstdio> const int ok[5][5]={ 0,0,1,1,0, 1,0,0,1,0, 0,1,0,0,1, 0,0,1,0,1, 1,1,0,0,0, }; int a[210],b[210]; int main() { int n, 阅读全文
posted @ 2016-08-10 08:20 ONION_CYC 阅读(432) 评论(0) 推荐(2)