POJ1192最优连通子串----树形dp】的更多相关文章

中文题面,目的很明显,把相邻的两个点看成是两个点之间有一条边,就能当成树形dp来做了. 用一遍dfs可以找出最大的子树权值和. #include<iostream> #include<vector> #include<queue> #include<string.h> #include<stdio.h> #include<map> using namespace std; #define p pair<int,int> m…
题目链接:poj1192 最优连通子集 求一棵无向树的最大子树和..类似于求最大子段和的办法,树形dp. dp[i][0]:以i为根,不包括 i 结点的子树最大权 dp[i][1]:以i为根,包括 i 结点的子树的最大权 dp[i][0] = max(dp[j][0] , dp[j][1])   (j 为 i 的儿子) dp[i][1] +=  dp[j][1] (dp[j][1] > 0,j 为 i 的儿子) #include<cstdio> #include<cstring&g…
将某点看做根状态,邻接点看做子状态,由子状态向根状态转移. POJ1192-最优连通子集 题解:将每一个点分成两个状态进行保存,因此可以构造一个数组dp[i][2]. dp[i][0]:不包括该点权值的子集最大权值和 dp[i][1]:包括该点权值的子集最大权值和 //Time:16Ms Memory:184K #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #inc…
/** 题目大意: 给你一个无向连通图,问加上一条边后得到的图的最少的割边数; 算法思想: 图的边双连通Tarjan算法+树形DP; 即通过Tarjan算法对边双连通缩图,构成一棵树,然后用树形DP求最长链,连接首尾即可;剩下的连通块即为所求答案; 算法思路: 对图深度优先搜索,定义DFN(u)为u在搜索树中被遍历到的次序号; 定义Low(u)为u或u的子树中能通过非父子边追溯到的最早的节点,即DFN序号最小的节点; 则有: Low(u)=Min { DFN(u), Low(v),(u,v)为树…
<题目链接> 题目大意: 给定一个连通图,每个点有点权,现在需要删除一条边,使得整张图分成两个连通块,问你删除这条边后,两联通块点权值和差值最小是多少. 解题分析: 删除一条边,使原连通图分成两个连通分量,所以删除的那条边必然是桥.为了得到所有的桥,我们对原图进行边双连通图缩点.然后对缩点后的新图,跑一遍树形DP,得到所有桥两端点权和的最小差值. #include <bits/stdc++.h> using namespace std; #define clr(a,b) memse…
Warm up Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 3160    Accepted Submission(s): 718 Problem Description N planets are connected by M bidirectional channels that allow instant transport…
由于圆不存在相交的关系 所以包容关系形成了树的形态 其实是一个森林 不过加一个0点 就变成了树. 考虑对于每个圆都求出最近的包容它的点 即他的父亲.然后树形dp即可.暴力建图n^2. const int MAXN=100010; int n,m,len; struct wy { ll x,y,r,w; inline int friend operator <(wy a,wy b){return a.r<b.r;} }t[MAXN]; int f[MAXN]; int lin[MAXN],ver…
树形DP入门 poj 2342 Anniversary party   先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大. 解题思路: 任何一个点的取舍可以看作一种决策,那么状态就是在某个点取的时候或者不取的时候,以他为根的子树能有的最大活跃总值.分别可以用f[i,1]和f[i,0]表示第i个人来和不来. 当…
2015年蓝桥杯第十题--生命之树(无根树dfs) ①暴力解法:枚举子集(选点) + dfs判断连通性(题目要求连通)满足上面两个条件下找出最大值权值和 ②dfs无根树转有根树,递归找最优 先学习无根树转有根树 参考博客:https://blog.csdn.net/Originum/article/details/82258450 参考博客:https://www.cnblogs.com/yspworld/p/4270876.html 无根树转有根树模板 void dfs(int cur, in…
Time Limit: 1000MS Memory Limit: 30000K Description The city consists of intersections and streets that connect them. Heavy snow covered the city so the mayor Milan gave to the winter-service a list of streets that have to be cleaned of snow. These s…