POJ1155 TELE(树DP)

来源:互联网 发布:菏泽陈集山药淘宝 编辑:程序博客网 时间:2024/05/17 04:32

题目:

poj.org/problem?id=1155

题意:

有N个节点的一棵树,上面前n-m个节点是信号站,后m个节点是用户,每个节点之间传输有消耗,每个用户有费用,总信号从1节点传输出来,求在不赔本的情况下能够最多传输给多少个用户。

思路:

明显是树DP,考虑3000个节点,dp[i][j]就是第i个节点在传输给j个用户的情况下的最小花费是多少,记录每个节点取得的可能最大用户数目,然后对于每个子节点暴力枚举更新就行了,最后1节点时花费为非正的最大的用户数就是答案。

注意每次更新一个节点的子节点时要把当前DP值储存下来用于更新,否则枚举不同数目时可能会重复。

代码:

//kopyh#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define MOD 1000000007#define N 3001using namespace std;int n,m,sum,res,flag;int dp[N][N],val[N],num[N],vis[N],tmp[N];vector<int>g[N],f[N];void dfs(int now){    dp[now][0] = 0;    if(val[now]>=0)dp[now][1] = -val[now], num[now]=1;    for(int i=0;i<g[now].size();i++)    {        int y=g[now][i];        dfs(y);        for(int j=0;j<=num[now];j++)tmp[j]=dp[now][j];        for(int j=0;j<=num[now];j++)            for(int k=0;k<=num[y];k++)                dp[now][j+k] = min(dp[now][j+k],tmp[j]+dp[y][k]+f[now][i]);        num[now]+=num[y];    }}int main(){    int i,j,k,cas,T,t,x,y,z;    while(scanf("%d%d",&n,&m)!=EOF)    {        for(i=1;i<=n;i++)g[i].clear(),f[i].clear();        for(i=1;i<=n-m;i++)        {            scanf("%d",&t);            while(t--)            {                scanf("%d%d",&x,&y);                g[i].push_back(x);                f[i].push_back(y);            }        }        memset(val,-1,sizeof(val));        memset(num,0,sizeof(num));        memset(dp,0x3f,sizeof(dp));        for(i=n-m+1;i<=n;i++)            scanf("%d",&val[i]);        dfs(1);        for(i=m;i>=0;i--)            if(dp[1][i]<=0)                break;        printf("%d\n",i);    }    return 0;}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 月经来两个星期怎么办 ipad停用15分钟怎么办 苹果6id停用怎么办 ipad密码停用了怎么办 ipad永久停用了怎么办 ipad停用1小时怎么办 ipad停用无法关机怎么办 citizen手表坏了怎么办 服务器磁盘满了怎么办 百度地图定位不准怎么办 宝宝准生证丢了怎么办 fgo刷不到材料怎么办 行者轨迹未上传怎么办? 房贷少了几块钱怎么办 房贷少了2块怎么办 天天在我们家蹭饭怎么办? 亲戚天天来吃饭怎么办 cad找不到图了怎么办 新建没有工作表怎么办 Html打开是乱码怎么办 xp只读取消不了怎么办 手机地图信号弱怎么办 苹果定位不准确怎么办 苹果导航卡死怎么办 没有上传的发票怎么办 发票显示未上传怎么办 发票未上传怎么办 影响 公务员国考补录不合格的怎么办 车辆转入退档怎么办 校园网总是断网怎么办 校园网经常断网怎么办 身份证号姓名电话号码泄露怎么办 中国邮政银行短信通知怎么办 中通递送不到怎么办 智齿碎了一半怎么办 驾照扣50分怎么办 办不了租赁合同怎么办 收到佰仟律师函怎么办 佰仟律师打电话怎么办 右转车道右方路禁行怎么办 收费站没带现金怎么办