HDU 5290 Bombing plan 树形dp
2015-07-27 16:39
211 查看
题目链接
题意
给定n个点的树,每个点有一个点权wi, 每次选一个点u,则树上u和距离u wi范围内的所有点都会被染色。
问:最少选几个点使得n个点都被染色。
思路:树形dp
对于某个点u
down[u][j] 表示u以及u向下深度为 j 的点没有被染色的最小花费。
up[u][j] 表示u以及u向上距离为j的点已经被染色的最小花费。
设u点的儿子们为v, v2, v3 ···,每个点点权为w[]数组
3种转移:
1、对于down[u][i] 显然就是子树的down数组求和,特殊一点就是down[u][0](含义为u的子树中 除了u没有被染色,别的点都染色的最小花费,所以是sigma(up[v][0]) )
2、如果选u点,则显然答案为 1 + sigma(down[v][ w[u]-1 ]) ,更新给up[u][w[u]]
3、如果不选u点,则从某个儿子的up数组更新过来答案为 up[v][j] + (down[u][ j-1 ]-down[v][j-2])
最后保持up 和 down的单调性。
代码及强力的小数据
题意
给定n个点的树,每个点有一个点权wi, 每次选一个点u,则树上u和距离u wi范围内的所有点都会被染色。
问:最少选几个点使得n个点都被染色。
思路:树形dp
对于某个点u
down[u][j] 表示u以及u向下深度为 j 的点没有被染色的最小花费。
up[u][j] 表示u以及u向上距离为j的点已经被染色的最小花费。
设u点的儿子们为v, v2, v3 ···,每个点点权为w[]数组
3种转移:
1、对于down[u][i] 显然就是子树的down数组求和,特殊一点就是down[u][0](含义为u的子树中 除了u没有被染色,别的点都染色的最小花费,所以是sigma(up[v][0]) )
2、如果选u点,则显然答案为 1 + sigma(down[v][ w[u]-1 ]) ,更新给up[u][w[u]]
3、如果不选u点,则从某个儿子的up数组更新过来答案为 up[v][j] + (down[u][ j-1 ]-down[v][j-2])
最后保持up 和 down的单调性。
代码及强力的小数据
相关文章推荐
- linux内核 asmlinkage宏
- WDCP升级到PHP5.3版本
- Android内存优化大全(中)
- C# .NET OCR and Barcode Recognition
- Android 加密数据库 sqlite
- libuv 源码分析 结构体
- Intents and Intent Filters用法
- 关于android library project里的assets
- 逻辑回归及美团逻辑回归总结
- hdu 5303 Delicious Apples(dp)
- html5中不再支持table的cellspacing和cellpadding属性
- hdoj 5294 Tricks Device 【最短路+ 最小割】
- 网络编程 TCP
- LeetCode Implement Stack using Queues
- 用JavaScript将Canvas内容转化成图片的方法
- error: No resource identifier found for attribute 'showAsAction' in package 'com.example.singlecheck
- Qt Creator 乱码问题
- GTK入门学习:Libglade 和 GtkBuilder 的区别使用
- 【bzoj3990】 SDOI2015排序 dfs搜索+剪枝
- idea 14 Error: Failed to create a child event loop