hdu 1520 && poj 2342

讨论

树形dp,利用深搜处理每个人,对于每个人而言,都有自己来或不来所得到的活跃度,都要记录下来,每个人的活跃度初始化到自己来的状态上,对于每个人,如果自己不来,从每个直接下属来或不来中取较大者加到自己身上,如果自己来,把每个直接下属不来加到自己身上,最后取boss来或不来的最大值返回即可
实现上,没什么可说的,只是读题的时候需要仔细一点,前者是下属,后者是上司

题解状态

124MS,1544K,979 B,G++

题解代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define MAXN 6004
#define memset0(a) memset(a,0,sizeof(a));

int N;//总人数
int dp[2][MAXN];//0是自己不来 1是自己来
int to[MAXN], pre[MAXN], al[MAXN], index;//当作图来处理的 四个静态邻接表的东西
bool not_root[MAXN];//不是boss 显然有上司的不是
void dfs(int a)
{
    for (int p = al[a]; p; p = pre[p]) {
        int b = to[p];
        dfs(b);
        dp[0][a] += max(dp[1][b], dp[0][b]);//自己不来 直接下属二者取较大
        dp[1][a] += dp[0][b];//自己来 下属肯定不来
    }
}
int fun()
{
    index = 1;
    for (int p = 1; p <= N; p++)
        scanf("%d", &dp[1][p]);//input//直接初始化为自己来的状态
    int b, a;
    while (scanf("%d%d", &b, &a) && (a || b)) {//input
        to[index] = b, pre[index] = al[a], al[a] = index++;
        not_root[b] = 1;
    }
    int boss = find(not_root + 1, not_root + N + 1, false) - not_root;//找出boss
    dfs(boss);
    return max(dp[0][boss], dp[1][boss]);
}
int main()
{
    //freopen("vs_cin.txt", "r", stdin);
    //freopen("vs_cout.txt", "w", stdout);

    while (~scanf("%d", &N)) {//input
        printf("%d\n", fun());//output
        memset0(al);
        memset0(dp[0]);
        memset0(not_root)
    }
}

EOF

展开阅读全文

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

01-19
想学好JAVA必须要报两万的培训班吗? Java大神勿入 如果你: 零基础想学JAVA却不知道从何入手 看了一堆书和视频却还是连JAVA的环境都搭建不起来 囊中羞涩面对两万起的JAVA培训班不忍直视 在职没有每天大块的时间专门学习JAVA 那么恭喜你找到组织了,在这里有: 1. 一群志同道合立志学好JAVA的同学一起学习讨论JAVA 2. 灵活机动的学习时间完成特定学习任务+每日编程实战练习 3. 热心助人的助教和讲师及时帮你解决问题,不按时完成作业小心助教老师的家访哦 上一张图看看前辈的感悟:     大家一定迫不及待想知道什么是极简JAVA学习营了吧,下面就来给大家说道说道: 什么是极简JAVA学习营? 1. 针对Java小白或者初级Java学习者; 2. 利用9天时间,每天1个小时时间; 3.通过 每日作业 / 组队PK / 助教答疑 / 实战编程 / 项目答辩 / 社群讨论 / 趣味知识抢答等方式让学员爱上学习编程 , 最终实现能独立开发一个基于控制台的‘库存管理系统’ 的学习模式 极简JAVA学习营是怎么学习的?   如何报名? 只要购买了极简JAVA一:JAVA入门就算报名成功!  本期为第四期极简JAVA学习营,我们来看看往期学员的学习状态: 作业看这里~   助教的作业报告是不是很专业 不交作业打屁屁 助教答疑是不是很用心   有奖抢答大家玩的很嗨啊     项目答辩终于开始啦   优秀者的获奖感言   这是答辩项目的效果     这么细致的服务,这么好的氛围,这样的学习效果,需要多少钱呢? 不要1999,不要199,不要99,只要9.9 是的你没听错,只要9.9以上所有就都属于你了 如果你: 1、 想学JAVA没有基础 2、 想学JAVA没有整块的时间 3、 想学JAVA没有足够的预算 还等什么?赶紧报名吧,抓紧抢位,本期只招300人,错过只有等时间待定的下一期了   报名请加小助手微信:eduxy-1    
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值