树形dp - Codeforces Round #322 (Div. 2) F Zublicanes and Mumocrates
2015-10-03 22:25
330 查看
Zublicanes and Mumocrates
Problem's Link
[b]Mean:[/b]给定一个无向图,需要把这个图分成两部分,使得两部分中边数为1的结点数量相等,最少需要去掉多少条边.
[b]analyse:[/b]
树形dp.
dp[cur][i][j]:当cur为i集合的时候 有j个和i同集合的方案
状态转移方程为:
dp[cur][i][j+k] = min{dp[to][i^1][j=(叶子个数-d)]+dp[cur][i][k]+1,dp[to][i][j]+dp[cur][i][k]}
cnt为叶子节点的个数.
最后答案是:min{ dp[root][0][cnt/2] ,dp[root][1][cnt/2]}
[b]Time complexity: O(N)[/b]
[b]view code[/b]
相关文章推荐
- UVALive 3530 Martian Mining(贪心,dp)
- sql语言:如何查询字符串某个字符的个数?
- mybatis的逆向工程
- 二叉查找树中搜索区间
- 位图
- 删除xml某节点
- 一步一步学jQuery(三)
- 提取文件夹中.lib文件名到文本中
- 声明一个记录类型,定义记录类型变量,保存员工信息
- matlab中hold指令、figure指令及subplot指令的使用
- ubuntu安装dbench
- LCS(模拟,寻找有多少个循环)
- Memory, Data, and Addressing
- CentOS 6.7下PXE+Kickstart无人值守安装操作系统
- Sql日期时间格式转换
- HDU 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online1008
- SQL获取当前时间(日期)
- 10.03JAVA应用学习知识点
- 捕获TextView超链接
- Android Fragment切换动画效果