博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vijos P1313 金明的预算方案(树形DP)
阅读量:4660 次
发布时间:2019-06-09

本文共 1060 字,大约阅读时间需要 3 分钟。

思路:

树形DP,和选课那题一模一样。有依赖的背包,也叫做泛化背包。

 

#include 
#include
#include
using namespace std;const int MAXD = 3210;const int MAXN = 64;int dp[MAXN][MAXD];int val[MAXN], deg[MAXN], pre[MAXN];void treedp(int u, int vol, int n){
if (!vol) return ; for (int i = 1; i <= n; ++i) {
if (pre[i] == u) {
for (int v = 0; v <= vol; ++v) dp[i][v] = dp[u][v]; treedp(i, vol - val[i], n); for (int v = vol; v >= val[i]; --v) dp[u][v] = max(dp[u][v], dp[i][v - val[i]] + val[i] * deg[i]); } }}int main(){
int n, vol; while (scanf("%d %d", &vol, &n) != EOF) {
vol /= 10; for (int i = 1; i <= n; ++i) scanf("%d %d %d", &val[i], °[i], &pre[i]), val[i] /= 10; for (int v = 0; v <= vol; ++v) dp[0][v] = 0; treedp(0, vol, n); printf("%d\n", dp[0][vol] * 10); } return 0;}

转载于:https://www.cnblogs.com/kedebug/archive/2013/02/18/2916358.html

你可能感兴趣的文章
House Robber
查看>>
Best Time to Buy and Sell Stock II
查看>>
一个C++的轻量级的logger实现
查看>>
CodeForces 708B Recover the String
查看>>
《算法图解》——第二章 选择排序
查看>>
多Region下HBase写入问题
查看>>
VueJs2.0建议学习路线
查看>>
idea创建maven-archetype-webapp项目无java目录
查看>>
第四周-第08章节-Python3.5-装饰器
查看>>
1、搭建Struts2开发环境
查看>>
Use "OR" in SQL with caution
查看>>
[super class] 和 [self superclass] 区别
查看>>
Mycat 设置全局序列号
查看>>
【原创】sharepoint排错
查看>>
C#实现多语言
查看>>
Nginx负载均衡配置说明
查看>>
java远程调用中出现的问题(主要是在不同电脑之间出现的问题)
查看>>
PHP正则表达式
查看>>
移除字符串中的汉字
查看>>
AC日记—— codevs 1031 质数环(搜索)
查看>>