题目:

题目描述
czy要召集他的妹子,但是由于条件有限,可能每个妹子不能都去,但每个妹子都有一个美丽值,czy希望来的妹子们的美丽值总和最大(虽然……)。 czy有一个周密的电话通知网络,它其实就是一棵树,根结点为czy,他可以通知一些妹子(毕竟他不认识他的所有妹子嘛),称为他的下线(也就是儿子节点),下线们继续通知自己的下线。任何妹子都可以不去,但是任何一个妹子如果要去,则她的上线(也就是她的父亲节点)一定要去。 为了使妹子美丽值总和最大,czy想安排一下,(非强制)让一些妹子去。但是妹子数很多,人脑是难以应付的,所以他想让你用电脑解决。输入输出格式
输入格式:
输入第一行两个整数n,m表示有n个妹子,至多只能去m个妹子。(1<=m<=n) 接下来2*n行,每两行代表一个妹子的信息(如果这个妹子没有子节点,就只有一行)。 每个妹子的第一行两个整数p,s,表示这个妹子美丽值为p,子节点个数s;(-100<=p<=100) 第二行s个整数,表示这个妹子的子节点的编号。czy的编号一定为1。输出格式:
输出一个整数,表示权值的最大值。输入输出样例
输入样例#1:
8 5
100 2
2 3
79 2
4 5
109 3
6 7 8
100 0
100 0
100 0
101 0
108 0
输出样例#1:
518
说明
对于20%数据1<=n<=10对于60%数据1<=n<=100对于100%数据1<=n<=1000

思路:

浅谈数据的合理组织

hzwer的博客

先对树进行先序遍历,将结果存在lst数组中。

设cnt[i]表示i的子节点个数+1,那么在lst数组中,可见i的下一个兄弟节点在lst中的编号为i+cnt[i]。

设f[i][j]表示只考虑i~n的妹子,在其中选j个妹子取所得的最大美丽值。

假如不选第i个妹子,那么第i+1~i+cnt[i]-1的妹子也不用考虑了,此时f[i][j] = f[i+ cnt[lst[i]]] [j]。

假如选第i个妹子,那么就需要加上第i个妹子的美丽值,以及在i+1~n个妹子中选j个妹子的最大美丽值,此时f[i][j]= f[i+1][j-1]+v[lst[i]]。

所以状态转移方程:f[i][j]=max(f[i+1][j-1]+v[lst[i]],f[i+cnt[lst[i]]][j])。

代码:

#include<bits/stdc++.h>
using namespace std;#define maxn 1000
#define inf (1<<30)int n,m;
int v[maxn+5];
vector<int> a[maxn+5];int lst[maxn+5]={0},q=0;
int cnt[maxn+5]={0};int f[maxn+5][maxn+5]={0};int dfs(int x){lst[++q]=x;if(!a[x].size()) return ++cnt[x];for(int i=0;i<a[x].size();i++){cnt[x]+=dfs(a[x][i]);}return ++cnt[x];
}void init(){for(int i=1;i<=n;i++){for(int j=2;j<=m;j++){f[i][j]=-inf;}f[i][1]=v[lst[i]];}
}int main(){scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){int x;scanf("%d%d",&v[i],&x);while(x--){int y;scanf("%d",&y);a[i].push_back(y);}}dfs(1);init();for(int i=n;i>=1;i--){for(int j=1;j<=m;j++){f[i][j]=max(f[i+1][j-1]+v[lst[i]],f[i+cnt[lst[i]]][j]);}}int ans=0;for(int i=1;i<=m;i++){ans=max(ans,f[1][i]);}printf("%d",ans);return 0;
}

czy的后宫5 召集妹子相关推荐

  1. czy的后宫——矩阵快速幂优化DP

    题意 有 n 个位置排成一行,可以放 m 种妹子.每个位置可以放也可以不放,规定某些妹子不能相邻,求方案数. 分析 #include<bits/stdc++.h> using namesp ...

  2. 2018.12.31 NOIP训练 czy的后宫5(树形dp)

    传送门 题意:给一棵有根树,树有点权,最多选出mmm个点,如果要选一个点必须先选其祖先,问选出来的点权和最大值是多少. 直接背包转移就行了. 代码 转载于:https://www.cnblogs.co ...

  3. NOIP训练 czy的后宫5(树形dp)

    传送门 题意:给一棵有根树,树有点权,最多选出mmm个点,如果要选一个点必须先选其祖先,问选出来的点权和最大值是多少. 直接背包转移就行了. 代码

  4. NOIP训练 czy的后宫6(线性dp)

    传送门 题意简述:给一个nnn个数的数列,你可以把它最多分成mmm段,求每段数之和的最大值的最小值,以及满足这个最小值的时候划分数列的方案数. 思路:第一个问题是二分经典问题,不妨设其答案为limli ...

  5. 2018.12.31 NOIP训练 czy的后宫6(线性dp)

    传送门 题意简述:给一个nnn个数的数列,你可以把它最多分成mmm段,求每段数之和的最大值的最小值,以及满足这个最小值的时候划分数列的方案数. 思路:第一个问题是二分经典问题,不妨设其答案为limli ...

  6. 差分约束 4416 FFF 团卧底的后宫

    /* 4416 FFF 团卧底的后宫  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 你在某日收到了 FFF 团卧底的求 ...

  7. [OJ#40]后宫佳丽

    [OJ#40]后宫佳丽 试题描述 如果机房要关门了,或者有妹子在等你,你可以直接看最后一句话. Fyq 是一只饥渴的鸭子. Fyq 有一个充实的后宫,可惜他总是体力不支,为此他经常苦恼,总是想方设法让 ...

  8. CodeVS4416 FFF 团卧底的后宫

    题目描述 Description 你在某日收到了 FFF 团卧底的求助,在他某日旅游回来,他的后宫们出现了一些不可调和的矛盾,如果 FFF 团卧底把自己的宝贝分给 a 号妹子,那么 b 号妹子至少要在 ...

  9. 太吾绘卷第一世攻略_《太吾绘卷》怎么让自己子嗣兴旺 后宫养成子嗣兴旺方法攻略...

    导 读 <太吾绘卷>里,无论玩家再怎么努力,第一世太吾的属性都不会很好,除非使用修改器或者MOD,而想要碾压相枢,需要几世或者十几世太吾的不懈努力,而这需要自己的子嗣兴旺,传人很多才可以做 ...

  10. CODE[VS] 4416 FFF团卧底的后宫

    题目描述 Description 你在某日收到了 FFF 团卧底的求助,在他某日旅游回来,他的后宫们出现了一些不可调和的矛盾,如果 FFF 团卧底把自己的宝贝分给 a 号妹子,那么 b 号妹子至少要在 ...

最新文章

  1. mysql 删除 修改密码_Mysql数据库root密码忘记了,如何在不删除Mysql的情况下修改密码...
  2. 使用netfilter_queue改包笔记
  3. rabbitmq 学习-9- RpcClient发送消息和同步接收消息原理
  4. java sofa rpc_【剖析 | SOFARPC 框架】
  5. unity怪物攻击玩家减血_热血传奇:游戏里要千万小心的小怪,玩家稍有不慎就要吃大亏...
  6. ffmpeg 硬解码
  7. kettle转换和作业插件开发及调试
  8. 选择正确的C/C++ runtime library
  9. 【课程·研】高级人工智能 | MOOC习题及课后作业:期末考试
  10. 经典编程题目-古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子
  11. HCIA-Day_04-链路状态协议OSPF PPP
  12. Java 14:JDK 14进入GA时的所有新功能
  13. matlab9级标度法,satty 标度法
  14. 解决input输入的是空格问题
  15. coTurn 运行在Windows平台的方法
  16. 命令行运行matlab的方法
  17. ExecuteNonQuery()返回-1的问题及解决
  18. 详解三大编译器:gcc、llvm 和 clang
  19. 解决外贸电商难题,PayPal中国外贸电商大会圆满礼成
  20. sinh函数_sinh()函数以及C ++中的示例

热门文章

  1. 电脑声控 电脑机器人功能
  2. 科幻文学入门指南(专业读者分享)
  3. Python采集 11月最新 世界疫情数据 + 可视化动态地图,实时查询超稳定
  4. 初级第七旬06—初级课程第七旬试题
  5. HTML---表格table标签中thead、tbody、tfoot的作用
  6. LVGL中文字体制作
  7. python识别字母代码_【Python-Opencv】KNN英文字母识别
  8. Massive MIMO简介
  9. Android 开发 DNK开发将.c文件打包成os
  10. 深圳大学计算机系在哪个校区,2021年深圳大学有几个校区,大一新生在哪个校区...