luogu1352没有上司的舞会

分析(树形DP模板题):

没学树形DP的,看一下。

把该题抽象到一颗树中,设i的下属就是他的儿子,则有两种情况:

如果i参加,他的儿子就不能参加。

如果i不参加,他的儿子可参加可不参加。

所以设f[i][1]表示i参加,f[i][0]表示i不参加,则有

f[i][]+=max(f[j][],f[j][]);
f[i][]+=f[j][]+w[i]; //j是i的儿子

所以

ans=max(f[i][],f[i][])   //最大快乐指数

得到基础代码:(很粗略,不过好懂)

#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=;
int f[maxn][],n,r[maxn];
int son[maxn][maxn],tot[maxn];
int vis[maxn];
int end;
void tree_dp(int x)
{
for (int i=;i<=tot[x];i++)
{
int y=son[x][i]; //哪个儿子
tree_dp(y); //刷新y的快乐指数
f[x][]+=max(f[y][],f[y][]);
f[x][]+=f[y][];
}
}
void work()
{
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%d",&f[i][]); //父亲(上司)要去的情况,要加本身的快乐指数
int k,l;
for (int i=;i<=n;i++)
{
scanf("%d%d",&l,&k);
if(l!=&&k!=)
{
son[k][++tot[k]]=l;
vis[l]=; //l是儿子
}
}
for (int i=;i<=n;i++)
{
if(!vis[i]) //找根节点(非儿子)
{
end=i;
break;
}
}
tree_dp(end);
printf("%d",max(f[end][],f[end][]));
}
int main()
{
work();
return ;
}

在这里就要说一下vector了,真的很好用

STL之vector

C++ luogu1352没有上司的舞会 from_树形DP的更多相关文章

  1. 洛谷 P1352 没有上司的舞会【树形DP】(经典)

    <题目链接> <转载于>>> > 题目描述: 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的 ...

  2. 洛谷 P1352 没有上司的舞会【树形DP/邻接链表+链式前向星】

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  3. 没有上司的舞会(树形DP)

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  4. 华山论剑(没有上司的舞会)——树形dp

    华山论剑(没有上司的舞会) 题目描述 一日,小策如往常一般打开了自己的传奇,刚上线不久,就收到了帮主的私信.原来帮派里要召开一次武功比拼,让他来邀请各帮派人员,因为有些侠客还是萌新,所以需要小策挨个选 ...

  5. CH5401 没有上司的舞会【树形DP】

    5401 没有上司的舞会 0x50「动态规划」例题 描述 Ural大学有N名职员,编号为1~N.他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司.每个职员有一个快乐指数,用整数 H_i 给 ...

  6. 【Luogu】P1352没有上司的舞会(树形DP)

    题目链接 设f[i][0]表示第i个人不去舞会时子树的最大欢乐度,f[i][1]表示第i个人去舞会时子树的最大欢乐度. 则有状态转移方程:f[i][0]+=∑max(f[to][0],f[to][1] ...

  7. luoguP1352没有上司的舞会(树形DP)

    题目链接:https://www.luogu.org/problemnew/show/P1352 题意:给定n个结点,每个结点有一个权值,给n-1条边,n个结点构成一棵树.并且规定一个结点的父结点如果 ...

  8. CODEVS1380 没有上司的舞会 (树形DP)

    f[i,0] 表示 第i个人不参加舞会 f[i,1] 表示 第i个人参加舞会 f[i,1]=sigma(f[j,0])+v[i]   j 为 i 的孩子 f[i,1]=sigma(max(f[j,0] ...

  9. AcWing 285. 没有上司的舞会(树形dp入门)

    Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司. 每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N1≤i≤N. 现在要召开一场周年 ...

随机推荐

  1. Linux crontab 语法和具体的例子

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...

  2. 持续集成及部署利器:Go(不要和Google的编程语言Go混淆了!)

    Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发.(不要和Google的编程语言Go混淆了!)其前身为CruiseControl,是ThoughtWorks在做咨询和交付交付项目 ...

  3. Java之nio MappedByteBuffer的资源释放问题

    使用nio的MappedByteBuffer映射内存, 在最后执行File.delete()方法的时候, 返回false,  即文件没有被删除. 原因是MappedByteBuffer在内存中也会创建 ...

  4. WPF查找父元素子元素

    原文:WPF查找父元素子元素 /// <summary>        /// WPF中查找元素的父元素        /// </summary>        /// &l ...

  5. WPF自定义控件步骤

    1 .在类库里面添加system.xaml的引用,给控件指定Name: 2.设计控件的外观,并将内部元素绑定到控件类的属性:此时即使没有在类中增加相关属性也不会报错,xaml类似html错误只是不显示 ...

  6. WM_CopyData 用法

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. 原生Js监听普通dom尺寸变化

    原生Js监听普通dom尺寸变化 具体做法有以下几种: 初始化项目后,轮询,反复查看 dom 尺寸是否变化,这种一听就感觉不好,开销太大. 监听元素的滚动事件,在 目标 dom 里面包裹一个同等大小的 ...

  8. python 编码转换 专题

    主要介绍了python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换. 常见的编码转换分为以下几种情况: 自动识别 字符串编 ...

  9. Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法

    原文:Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法  [函数名称]   图像统计滤波   WriteableBitmap StatisticalFilter(Writeab ...

  10. 浅谈Android高通(Qualcomm)和联发科(MTK)平台

    一款CPU好不好是要从多个方面考虑的,并不是说简简单单看一个主频.几个核心数就完了,更重要的是它的综合实力到底有多强,这里面当然也会牵扯到价格问题,性能相似当然是便宜的获胜,这是毋庸置疑的. 事实上, ...