博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1561 The more, The Better (依赖背包 树形dp)
阅读量:5117 次
发布时间:2019-06-13

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

题目:

        链接:

题意:

        非常明显的依赖背包。

思路:

        dp[i][j]表示以i为根结点时攻击j个城堡得到的最大值。(以i为根的子树选择j个点所能达到的最优值

dp[root][j] = max(dp[root][j],dp[root][k]+dp[u][j-k]);

u递归根结点,root当前根结点,每一个城堡之间的依赖关系形成森林。应该转化为树。再树形dp。仅仅需添加一个根结点即可。m++。

代码:

#include
#include
#include
using namespace std;#define MAXN 220int num[MAXN];int map[MAXN][MAXN];//存树int dp[MAXN][MAXN];int vis[MAXN];int n,m;void dfs(int root){ vis[root] = 1; for(int i=1; i<=num[root]; i++) { int u = map[root][i]; if(!vis[u]) dfs(u); for(int j=m; j>=2; j--) { for(int k=1; k

-----------------------------------------------------------------------------------------

        依赖背包的入门题。没可以自己写出来

---------------------------------------------------------------------------------------

战斗。永不停歇~~~~~~~~~~~~~~~~~~

转载于:https://www.cnblogs.com/mengfanrong/p/5164636.html

你可能感兴趣的文章
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>