【树形DP】 hdu1155 TELE
来源:互联网 发布:克拉科夫理工大学 知乎 编辑:程序博客网 时间:2024/06/02 02:06
TELE
题目:http://poj.org/problem?id=1155
题意:一个电视信号传输网络(树),点1为信号源,图中有N个点,其中包括M个用户和N-M个传输点(包括1),铺设点与点之间的线需要一定的钱,每个用户也会对电视信号付出一些钱,问怎样建设网络可以使尽可能多的用户收到信号且电视台不亏本。
题解:树形DP和背包,dp[i][j]为第i个点给j个用户传输信号的最大收益,dp初始化为最小值。
ps:竟然1A了,惊喜啊。
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define MAX 3005#define inf 0xfffffint edge[MAX];//表示第i条边的终点int next[MAX];//与第i条边同起点的下一条边的位置int head[MAX];//以i为起点的第一条边的储存位置int cost[MAX];//第i条边的权值int value[MAX];//第i个点的权值int dp[MAX][MAX];int cnt;void insert(int a,int b,int c)//a起点,b终点{ edge[++cnt]=b; next[cnt]=head[a]; head[a]=cnt; cost[cnt]=c;}int dfs(int x){ int summ=0; dp[x][0]=0; int t[MAX]; bool flag=false; for(int i=head[x]; i!=-1; i=next[i]) { flag=true; t[edge[i]]=dfs(edge[i]); summ+=t[edge[i]]; } for(int i=head[x]; i!=-1; i=next[i]) { int k=edge[i]; for(int j=summ; j>=0; --j) { if(dp[x][j]==-inf) continue; for(int q=1; q<=t[k]; ++q) dp[x][j+q]=max(dp[x][j+q],dp[x][j]+dp[k][q]-cost[i]);//根结点取j个用户,子结点k取q个用户 } } if(flag) return summ; else//当前结点为用户 { dp[x][1]=value[x]; return 1; }}int main(){ int n,m,k,b,c; for(; ~scanf("%d%d",&n,&m);) { memset(head,-1,sizeof(head)); memset(next,-1,sizeof(next)); cnt=0; for(int i=1; i<=n-m; ++i) { scanf("%d",&k); for(; k--;) { scanf("%d%d",&b,&c); insert(i,b,c); } } for(int i=n-m+1; i<=n; ++i) scanf("%d",&value[i]); for(int i=1; i<=n-m; ++i) for(int j=0; j<=m; ++j) dp[i][j]=-inf; dfs(1); int ans=0; for(int i=m; i>=0; --i) if(dp[1][i]>=0) { ans=i; break; } printf("%d\n",ans); } return 0;}来源:http://blog.csdn.net/acm_ted/article/details/7903205
- 【树形DP】 hdu1155 TELE
- POJ1155:TELE(树形DP)
- poj1155 TELE 【树形dp】
- poj1155 TELE(树形dp)
- POJ 1155 TELE 树形dp
- poj 1155 TELE 树形dp
- POJ-1155--TELE--树形DP
- POJ 1155 TELE 树形DP
- POJ 1155 TELE(树形DP)
- poj 1155 TELE (树形dp)
- POJ 1155 TELE / 树形DP
- poj 1155 TELE (树形dp)
- POJ1155 TELE(树形DP)
- [POJ1155]TELE(树形dp)
- POJ1155 TELE【树形dp(背包)】
- POJ 1155 TELE(树形DP)
- POJ 1155 TELE 树形dp
- [POJ1155]TELE(树形dp)
- jQuery Ajax 实例 全解析
- linux RTP(下)
- 详解SQL Server Profiler分析死锁几大步骤
- Ubuntu Sun JDK 安装
- .NET Framework 3.5 sp1离线安装方案
- 【树形DP】 hdu1155 TELE
- close函数
- csdn操蛋的生活
- Objective-C学习笔记(2)----Objective-c中@property声明时的参数释疑
- Mysql 中开启日志方法
- 计算机学院的师弟师妹们,请不要去餐馆打工了
- ZOJ 1382 A Simple Task
- Wince下usb驱动详细总结(史无前例的详细)
- 直方图均衡化