zoukankan      html  css  js  c++  java
  • VIJOS:P1706(舞会)

    描述

    Arthur公司是一个等级森严的公司,它们有着严格的上司与下属的关系,公司以总裁为最高职位,他有若干个下属,他的下属又有若干个下属,他的下属的下属又有若干个下属……现接近年尾,公司组织团拜活动,活动中有一部分是自由舞会,公司的每个职员都有一个搞笑值,现要你制定一套哪些人上台的方案,使得台上所有演员的搞笑值最大。当然,职员们是不会和他们的顶头上司一起上台的。

    格式

    输入格式

    第一行一个整数N,表示这个公司总共的职员个数。

    接下来一行有N个整数,由空格隔开,第i个整数表示职员i的搞笑值Ai(-1327670≤Ai≤1327670)。

    接下来N-1行,每行一个1到N的整数,第i个整数表示职员i+1的顶头上司是谁,当然总裁就是职员1。

    输出格式

    一个整数,表示台上所有职员搞笑值之和的最大值。

    输入:

    7
    1 1 1 1 1 1 1
    1
    1
    5
    1
    4
    4

    输出:

    5

    没有上司的舞会问题

    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    const int MAXN=5005;
    typedef long long ll;
    int n;
    int v[MAXN];
    vector<int> tree[MAXN];
    ll dp[MAXN][2];
    void dfs(int u)
    {
        dp[u][1]+=v[u];
        for(int i=0;i<tree[u].size();i++)
        {
            int v=tree[u][i];
            dfs(v);
            dp[u][0]+=max(dp[v][1],dp[v][0]);    
            dp[u][1]+=dp[v][0];
        }
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>v[i];
        }
        for(int i=2;i<=n;i++)
        {
            int fa;
            cin>>fa;
            tree[fa].push_back(i);
        }
        dfs(1);
        cout<<max(dp[1][0],dp[1][1])<<endl;
        
        return 0;
    }
  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/program-ccc/p/5639609.html
Copyright © 2011-2022 走看看