zoukankan      html  css  js  c++  java
  • 选课(背包类树形dp)

    即在树上做背包

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
     
    struct my{
           int next;
           int v;
    };
     
    const int maxn=1000+10;
     
    int adj[maxn],fa,n,m,dp[maxn][maxn];
    my bian[maxn*2];
    int score[maxn];
     
    void myinsert(int u,int v){
         bian[++fa].v=v;
         bian[fa].next=adj[u];
         adj[u]=fa;
    }
     
    void dfs(int x){
         dp[x][0]=0;
         for (int i=adj[x];i!=-1;i=bian[i].next){
            int v=bian[i].v;
                dfs(v);
                for (int t=m;t>=0;t--){
                    for (int j=t;j>=0;j--){
                            if(t-j>=0)
                        dp[x][t]=max(dp[x][t],dp[x][t-j]+dp[v][j]);
                    }
                }
         }
         if(x!=0){
            for (int t=m;t>0;t--){
                dp[x][t]=dp[x][t-1]+score[x];
            }
         }
    }
     
    int main(){
        int v;
        memset(adj,-1,sizeof(adj));
        memset(bian,-1,sizeof(bian));
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++){
            scanf("%d%d",&v,&score[i]);
            myinsert(v,i);
          //  myinsert(i,v);
        }
        dfs(0);
        printf("%d",dp[0][m]);
    return 0;
    }
  • 相关阅读:
    2019 SDN上机第5次作业
    hdu 2553 N皇后问题(递归)
    百练oj 2766 最大子矩阵和
    POJ 1664 放苹果
    POJ 3617 Best Cow Line(贪心)
    HDU 2013 ACM/ICPC Asia Regional Hangzhou Online ------ Zhuge Liang's Mines
    HDU 4712 Hamming Distance (随机算法)
    HDU 1171 Big Event in HDU
    HDU 1085 Holding Bin-Laden Captive!
    HDU 1028 母函数
  • 原文地址:https://www.cnblogs.com/lmjer/p/9418929.html
Copyright © 2011-2022 走看看