POJ 1155 TELE(树形DP)
来源:互联网 发布:菠菜代源码论坛 编辑:程序博客网 时间:2024/06/05 17:23
第一道没看题解,自己写出来的树形DP,纪念一下。,
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 3000+5;int head[maxn],pay[maxn],n,m;bool vis[maxn];#define INF 0x3f3f3f3fint pnt[2*maxn],nxt[2*maxn],cst[2*maxn],cnt;int dp[maxn][maxn],num[maxn];void init() { memset(head,-1,sizeof(head)); memset(nxt,-1,sizeof(nxt)); cnt=0;}void add_edge(int a,int b,int w) { pnt[cnt]=b; cst[cnt]=w; nxt[cnt]=head[a]; head[a]=cnt++;}void dfs(int rt) { vis[rt]=1; dp[rt][0]=0; for(int i=1;i<=m;++i) dp[rt][i]=-INF; if(rt>n-m){ dp[rt][1]=pay[rt]; num[rt]=1; return ; } for(int i=head[rt]; i+1 ; i=nxt[i]) { int ch=pnt[i]; if(!vis[ch]) { dfs(ch); num[rt]+=num[ch]; for(int j=m; j>=0; j--) for(int k=1; k<=num[ch]&&k+j<=num[rt]; k++)///一开始没加限制条件,直接TLE了 dp[rt][j+k]=max(dp[rt][j+k],dp[rt][j]+dp[ch][k]-cst[i]); } }}int main() { while(scanf("%d%d",&n,&m)!=EOF) { init(); for(int i=1,k,x,y; i<=n-m; ++i) { scanf("%d",&k); while(k--) { scanf("%d%d",&x,&y); add_edge(i,x,y); } } memset(pay,0,sizeof(pay)); for(int i=n-m+1; i<=n; ++i) scanf("%d",&pay[i]); memset(vis,false,sizeof(vis)); memset(num,0,sizeof(num)); dfs(1); int ans=0; for(int i=0; i<=m; ++i) if(dp[1][i]>=0) ans=max(ans,i); printf("%d\n",ans); } return 0;}
0 0
- 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)
- POJ 1155 TELE(树形DP)
- POJ 1155 TELE 树形dp
- POJ - 1155 TELE(树形dp)
- poj 1155 TELE (树形背包dp)
- POJ-1155 TELE(树形dp+背包)
- poj 1155 TELE (树形DP+优化)
- (中等) 树形dp POJ 1155 TELE
- poj 1155 TELE(树形泛化背包dp)
- POJ 1155 TELE (树形DP+背包)
- POJ 1155 TELE(树形DP)
- 采用Stanford Parser进行中文语法解析
- 【算法导论】最大二分匹配
- 利用Stanford Parser进行中文行为抽取
- 自定义控件--仿QQ表情面板
- IOS学习之路 之 icon 启动画面
- POJ 1155 TELE(树形DP)
- showBusyCursor="true"
- 关联、组合、聚合、依赖关系比较
- C# ASP.NET 操作数据库的基本方法
- 远程连接Oracle数据库
- 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统(附源码+视频教程(第9节))
- 我的个人知识管理工具一览及相关经验技巧
- 【深搜】汽车的最终位置
- Windows XP、Windows Vista 启动过程详解(国内很难找到这么详细的)