博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4276
阅读量:7035 次
发布时间:2019-06-28

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

题意:你在一座古墓里盗墓,古墓在T分钟时就会倒塌,你就挂了。古墓有n个房间,每个房间都有一定价值的宝藏,n-1条边,每条边有花费的时间,形成一棵树。如果逃不出去就输出Human beings die in pursuit of wealth, and birds die in pursuit of food!  如果能逃出去,那么输出能获得的最大价值是多少。

思路:先dfs算出到n点的最短路,然后判断时间是否大于T。如果大于T就输出Human beings die in pursuit of wealth, and birds die in pursuit of food!   如果能逃出去,那么起点到终点上的点是必须走的,所以把起点到终点上的边的花费设为0,然后把剩余的时间T减去最短路花费的时间。接下来的问题就是剩余时间T能获得的最大价值。就是一个树形DP,参考了一下网上的博客。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;const int MAXN=110;const int MAXT=550;struct Edge{ int u,v,w,nex;}edge[MAXN*2];int tot,u,v,w;int val[MAXN];int pre[MAXN];int head[MAXN];int dist[MAXN];vector
lu;int dp[MAXN][MAXT];int n,ti;void addedge(int u,int v,int w){ edge[tot].u=u; edge[tot].v=v; edge[tot].w=w; edge[tot].nex=head[u]; head[u]=tot++;}void dfs(int u,int pr){ for(int i=head[u];i!=-1;i=edge[i].nex) { Edge e=edge[i]; if(e.v==pr) continue; pre[e.v]=i; dist[e.v]=dist[u]+e.w; dfs(e.v,u); }}void dfs2(int u,int pre){ for(int i=0;i<=ti;i++) dp[u][i]=val[u]; for(int i=head[u];i!=-1;i=edge[i].nex) { Edge e=edge[i]; if(e.v==pre) continue; dfs2(e.v,u); for(int j=ti;j>=2*e.w;j--) for(int k=0;k<=j-2*e.w;k++) dp[u][j]=max(dp[u][j],dp[u][j-k-2*e.w]+dp[e.v][k]); }}void init(){ tot=0; memset(head,-1,sizeof(head)); memset(pre,-1,sizeof(pre)); for(int i=0;i
ti) { puts("Human beings die in pursuit of wealth, and birds die in pursuit of food!"); continue; } for(int i=n;i!=1;i=edge[pre[i]].u) edge[pre[i]].w=edge[pre[i]^1].w=0; ti-=dist[n]; dfs2(1,-1); printf("%d\n",dp[1][ti]); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/onlyAzha/p/4781321.html

你可能感兴趣的文章
python学习——截图工具编写
查看>>
linux下安装vsftp
查看>>
如何查看python selenium的api
查看>>
hadoop每个家庭成员
查看>>
【LeetCode】273. Integer to English Words
查看>>
如何使用 awk 复合表达式
查看>>
将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)(转)...
查看>>
爬虫代码阅读-登陆,广度遍历与深度遍历
查看>>
Visual Studio 2017十五项新功能体验
查看>>
看完让你彻底搞懂Websocket原理
查看>>
Python命名规范
查看>>
历数几款第三方的Oracle数据库安全及漏洞扫描软件
查看>>
VirtualHost不生效(weblogic桥接),不同域名,同一IP,PORT
查看>>
(2)入门指南——(2)jQuery可以做什么(What jQuery does)
查看>>
Shell程序荟萃
查看>>
C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2...
查看>>
Lintcode: Delete Digits
查看>>
EasyUI刚加载时候Window窗体自动弹出的解决办法
查看>>
ASP入门(十五)- Global.asa
查看>>
关于delphi编程的网络文件夹复制的代码精要
查看>>