HDOJ树形DP专题之Centroid
题目链接
这题跟Balance Act那题差不多,求图的质点。我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢?
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include <stdio.h> 2 #include <string.h> 3 #include <vector> 4 #define N 16000 5 #define MAX(a,b) ((a)>(b)?(a):(b)) 6 using namespace std; 7 vector<int> g[N]; 8 int n,p[N],d[N],sum[N],w[N],dmax,ans[N],cnt; 9 void dfs(int u,int fa) 10 { 11 int i,v; 12 d[u]=(fa==-1?0:d[fa]+1); 13 dmax=MAX(dmax,d[u]); 14 for(i=0; i<g[u].size(); i++) 15 { 16 v=g[u][i]; 17 if(v!=fa) dfs(v,p[v]=u); 18 } 19 } 20 void dp() 21 { 22 int i,j; 23 memset(w,0,sizeof(w)); 24 for(i=0; i<n; i++) sum[i]=1; 25 for(i=dmax; i>=0; i--) 26 { 27 for(j=0; j<n; j++) 28 { 29 if(d[j]!=i) continue; 30 w[j]=MAX(w[j],n-sum[j]); 31 if(i>0) w[p[j]]=MAX(w[p[j]],sum[j]),sum[p[j]]+=sum[j]; 32 } 33 } 34 } 35 int main() 36 { 37 int i,t,u,v,min; 38 scanf("%d",&n); 39 for(i=0; i<n; i++) g[i].clear(); 40 for(i=0; i<n-1; i++) 41 { 42 scanf("%d%d",&u,&v); 43 u--,v--; 44 g[u].push_back(v); 45 g[v].push_back(u); 46 } 47 dmax=0; 48 dfs(0,-1); 49 dp(); 50 min=0x7fffffff; 51 cnt=0; 52 for(i=0; i<n; i++) 53 { 54 if(w[i]<min) cnt=0,min=w[i],ans[cnt++]=i; 55 else if(w[i]==min) ans[cnt++]=i; 56 } 57 printf("%d %d\n",min,cnt); 58 for(i=0; i<cnt-1; i++) printf("%d ",ans[i]+1); 59 printf("%d",ans[cnt-1]+1); 60 return 0; 61 }
转载于:https://www.cnblogs.com/algorithms/archive/2012/05/02/2479673.html
HDOJ树形DP专题之Centroid相关推荐
- layui树形父子不关联_DP专题7 | 没有上司的舞会 洛谷1352(树形DP)
高能预警:这是一篇超过5分钟的学习文章,暑假了可以多学会 本篇继续咱们的DP专题,树形DP入门.动态规划每一个类型的DP都是深坑,期望童鞋们自己在这个系列的基础上多花时间进行拓展,学习愉快~ 在讨论树 ...
- 树形DP --算法竞赛专题解析(17)
本系列文章将于2021年整理出版,书名<算法竞赛专题解析>. 前驱教材:<算法竞赛入门到进阶> 清华大学出版社 网购:京东 当当 想要一本作者签名书?点我 如有建议, ...
- 九大背包问题专题--有依赖的背包问题(树形Dp结合)
9.有依赖的背包问题 问题: 有N件物品和一个容量是V的背包. 物品之间具有依赖关系,且依赖关系组成一棵树的形状.如果选择一个物品,则必须选择它的父节点. 如图所示 如果选择物品5,则必须选择物品1和 ...
- 树形$dp$学习笔记
今天学习了树形\(dp\),一开始浏览各大\(blog\),发现都\(TM\)是题,连个入门的\(blog\)都没有,体验极差.所以我立志要写一篇可以让初学树形\(dp\)的童鞋快速入门. 树形\(d ...
- 树形DP(HDOJ1011 2196 4003 5148 POJ2342)
自己整理了个比较水的模版...一般简单的树形DP题基本可以解.... 用HDOJ 4003举例 题目大意:给一棵树,以及每人通过此边的花费,求用给定人数遍历树的最小花费 输入 点数,根位置,人数 始边 ...
- DP专题考试总结(4)
最近努力学(tui)习(fei)了DP专题,然后考试又挂了,然后就没有然后了. 对此,我只想说-- 吾每念,常痛于骨髓,顾计不知所出耳! 广场铺砖问题 期望得分:40 实际得分:10 Descript ...
- [51nod1299]监狱逃离 树形DP || 20w个点的网络流最小割ORZ
监狱有N条道路连接N + 1个交点,编号0至N,整个监狱被这些道路连在一起(任何2点之间都有道路),人们通过道路在交点之间走来走去.其中的一些交点只有一条路连接,这些点是监狱的出口.在各个交点中有M个 ...
- UVa在线比赛单题汇总-----DP专题
动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
最新文章
- 将表里的数据批量生成INSERT语句的存储过程 增强版
- 【MATLAB】符号数学计算(四):符号表达式操作
- elk7.2+filebeat
- Oracle删库跑路
- 五、Elasticsearch中的API的简单使用(Python版本)
- Android---手动创建线程与GUI线程同步(三)
- 六、PHP框架Laravel学习笔记——响应设置和重定向
- 防范网络*** 应用层防护是重点
- 你要知道的内存条知识
- Android SQlite基本用法
- 使用IntelliJ IDEA 配置Maven(入门)
- Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n
- JavaScript颜色加深或减淡
- VS2015 还是VS2017 好用_强烈推荐:2020年12款Visual Studio 好用的工具
- 史上最简单的,最直接的sass的安装教程
- 实用至上,推荐五款非常实用的软件
- android与ios系统优缺点,安卓系统与苹果iOS系统的差别,谁更好用?为什么系统会卡顿?...
- 【LLYD】That 70s show: why the disco decade is back in fashion
- 手势识别系统的发展前景
- 原来js可以这样用。类似51la.cnzz统计的js接口
热门文章
- 福建省计算机初级职称,2019福建助理工程师职称评定条件材料及审核管理制度...
- 计算机原理期中考试,计算机组成原理期中考试试题
- 2019蓝桥杯Java决赛题答案_2019第十届蓝桥杯JavaB组省赛真题详解
- 最长上升子序列 java_最长上升子序列 O(nlogn)解法 (java)
- leetcode31. 下一个排列
- leecode5 最长回文子串
- Redis:21---客户端相关配置篇
- 在CodeBlocks下配置GoogleTest单元测试框架
- 《Java8实战》笔记(12):新的日期和时间API
- 微博安全是一个系统问题包括服务器安全,应用安全开发注意事项