POJ 1155
来源:互联网 发布:广告录音软件 编辑:程序博客网 时间:2024/06/06 04:59
【题目分析】
树型DP
【代码】
#include <cstdio>#include <cmath>#include <cstring>#include <iostream>#include <algorithm>#include <vector>using namespace std;const int inf=0x3f3f3f3f;int dp[3001][3001];vector <int> v[3001];vector <int> w[3001];int num[3001];int n,m,k,a,b;inline void add(int a,int b,int c){ v[a].push_back(b); w[a].push_back(c);}inline void dfs(int k){ for (int i=0;i<v[k].size();++i) { dfs(v[k][i]); num[k]+=num[v[k][i]]; for (int j=num[k];j>0;--j) for (int l=num[v[k][i]];l>=1;--l) dp[k][j]=max(dp[k][j],dp[k][j-l]+dp[v[k][i]][l]-w[k][i]); }}int main(){ while(~scanf("%d%d",&n,&m)) { for (int i=1;i<=n;++i) v[n].clear(); for (int i=1;i<=n-m;i++) { scanf("%d",&k); num[i]=0; for(int j=0;j<k;j++) { scanf("%d%d",&a,&b); add(i,a,b); } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) dp[i][j]=-inf; } for(int i=n-m+1;i<=n;i++) { num[i]=1; scanf("%d",&dp[i][1]); } dfs(1); for(int i=m;i>=0;i--) { if(dp[1][i]>=0) { printf("%d\n",i); break; } } }}
0 0
- poj 1155
- POJ 1155
- poj 1155 TELE
- TELE POJ 1155
- POJ 1155(TreeDP)
- POJ 1155 TELE
- poj 1155 TELE
- Poj 1155 TELE
- poj 1155 TELE
- Poj 1155 树形DP
- poj 1155 TELE
- poj 1155 tele
- POJ - 1155 (树形dp)
- poj 1155 TELE
- POJ 1155 树形DP
- POJ 1155 树形dp
- poj 1155 TELE
- POJ 1155 树形DP
- 激情撸一发,“爱尚阅”app
- bat脚本_常见命令
- Activity生命周期
- span,a标签,label标签文字右边的1px空白的解决办法
- Java多线程
- POJ 1155
- C和指针读书笔记(第三章)
- task
- abap screen item
- 阿里一道机器人面试题。
- ADO.NET
- 指针和const
- WebServiece实现天气预报
- POJ3278(BFS广度优先搜索)之Catch That Cow