zoukankan      html  css  js  c++  java
  • 没有上司的舞会

    没有上司的舞会

    题意

    某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。

    解法

    (dp[i][0/1]) 表示第i号节点选不选。
    易得转移方程有:

    $ dp[i][0] += max ( dp[soni][1],dp[soni][0] ) ( ) dp[i][1] += dp[soni][0] $

    代码

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <cctype>
    #include <vector>
    #define INF 2139062143
    #define MAX 0x7ffffffffffffff
    #define del(a,b) memset(a,b,sizeof(a))
    using namespace std;
    typedef long long ll;
    template<typename T>
    inline void read(T&x)
    {
        x=0;T k=1;char c=getchar();
        while(!isdigit(c)){if(c=='-')k=-1;c=getchar();}
        while(isdigit(c)){x=x*10+c-'0';c=getchar();}x*=k;
    }
    const int maxn=6000+5;
    int a[maxn];
    int dp[maxn][2];
    vector<int>G[maxn];
    bool fa[maxn];
    int n,root;
    void dfs(int u,int fa){
        dp[u][1]=a[u];
        int sum1=0,sum2=0;
        for(int i=0;i<G[u].size();i++){
            int v=G[u][i];
            if(v==fa)continue;
            dfs(v,u);
            dp[u][0]+=max(dp[v][0],dp[v][1]);
            dp[u][1]+=dp[v][0];
        }
    }
    int main()
    {
        read(n);
        for(int i=1;i<=n;i++) read(a[i]);
        for(int i=1;i<n;i++){
            int v,u;
            read(v),read(u);
            fa[v]=1;
            G[v].push_back(u);
            G[u].push_back(v);
        }
        for(int i=1;i<=n;i++) if(!fa[i]){
            G[0].push_back(i);
            G[i].push_back(0);
        }
        dfs(0,0);
        printf("%d",max(dp[0][0],dp[0][1]));
        return 0;
    }
    
  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/mrasd/p/9520298.html
Copyright © 2011-2022 走看看