描述

czy要召集他的妹子,但是由于条件有限,可能每个妹子不能都去,但每个妹子都有一个美丽值,czy希望来的妹子们的美丽值总和最大(虽然……)。

czy有一个周密的电话通知网络,它其实就是一棵树,根结点为czy,他可以通知一些妹子(毕竟他不认识他的所有妹子嘛),称为他的下线(也就是儿子节点),下线们继续通知自己的下线。任何妹子都可以不去,但是任何一个妹子如果要去,则她的上线(也就是她的父亲节点)一定要去。

为了使妹子美丽值总和最大,czy想安排一下,(非强制)让一些妹子去。但是妹子数很多,人脑是难以应付的,所以他想让你用电脑解决。

输入格式

输入第一行两个整数n,m表示有n个妹子,至多只能去m个妹子。(1<=m<=n)

接下来2*n行,每两行代表一个妹子的信息(如果这个妹子没有子节点,就只有一行)。

每个妹子的第一行两个整数p,s,表示这个妹子美丽值为p,子节点个数s;(-100<=p<=100)

第二行s个整数,表示这个妹子的子节点的编号。czy的编号一定为1。

对于20%数据1<=n<=10

对于60%数据1<=n<=100

对于100%数据1<=n<=1000

输出格式

输出一个整数,表示权值的最大值。

样例输入

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

样例输出

518

原题:czy的后宫5

参考何森《浅谈数据的合理组织》

 #include<iostream>
#include<cstring>
using namespace std; const int INF=0x7fffffff; int n,m;
int v[],s[],a[][];
int f[][];
int list[],Count[],q; int tree_traversal(int k)
{
list[++q]=k;//list[q]表示q位置的是k号妹子
if(s[k]==) return ++Count[k];
for(int i=;i<=s[k];i++)
Count[k]+=tree_traversal(a[k][i]);
return ++Count[k];//Count[k]表示k号妹子有几个下属
} int main()
{
memset(f,0x8f,sizeof(f));
cin>>n>>m;
for(int i=;i<=n;i++)
{
int t;
cin>>v[i]>>t;
while(t--)
cin>>a[i][++s[i]];
}
tree_traversal();//将树转换为线性结构
for(int i=;i<=n;i++)
{
f[i][]=;
f[i][]=v[list[i]];
}
for(int i=n-;i>=;i--)
for(int j=;j<=m;j++)
f[i][j]=max(f[i+][j-]+v[list[i]],f[i+Count[list[i]]][j]);//f[i][j]表示第i个位置的妹子,通知j个人得到的最大权值
int ans=-INF;
for(int i=;i<=m;i++)
ans=max(ans,f[][i]);
cout<<ans;
}

NOIP模拟赛 czy的后宫5的更多相关文章

  1. NOIP模拟赛 czy的后宫6

    czy的后宫6 题目描述 众所周知的是丧尸czy有很多妹子(虽然很多但是质量不容乐观QAQ),今天czy把n个妹子排成一行来检阅.但是czy的妹子的质量实在……所以czy看不下去了.检阅了第i个妹子会 ...

  2. NOIP模拟赛 czy的后宫4

    czy的后宫4 [问题描述] czy有很多妹子,妹子虽然数量很多,但是质量不容乐观,她们的美丽值全部为负数(喜闻乐见). czy每天都要带N个妹子到机房,她们都有一个独一无二的美丽值,美丽值为-1到- ...

  3. NOIP模拟赛 czy的后宫3

    [题目描述] 上次czy在机房妥善安排了他的后宫之后,他发现可以将他的妹子分为c种,他经常会考虑这样一个问题:在[l,r]的妹子中间,能挑选出多少不同类型的妹子呢? 注意:由于czy非常丧尸,所以他要 ...

  4. NOIP模拟赛 czy的后宫

    [题目描述] czy要妥善安排他的后宫,他想在机房摆一群妹子,一共有n个位置排成一排,每个位置可以摆妹子也可以不摆妹子.有些类型妹子如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看了.假定每种 ...

  5. 2014-10-31 NOIP模拟赛

        10.30 NOIp  模拟赛   时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...

  6. NOIP模拟赛20161023

    题目名 双色球 魔方 czy的后宫 mex 源文件 ball.cpp/c/pas cube.cpp/c/pas harem.cpp/c/pas mex.cpp/c/pas 输入文件 ball.in c ...

  7. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  8. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  9. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对   描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们 ...

随机推荐

  1. Hexo写作系列(3) - 文章标题含有双引号"导致页面渲染失败无法打开

    问题 在用Hexo写文章时,如果文章标题含有双引号",也就是说如果在文件头里的title出现双引号,如下: --- title: Hexo - 文章标题含有双引号"导致页面渲染失败 ...

  2. Centos 自动更新git

    首先,要先配置好自己的Git,然后在某一处进行脚本的编写. 比如项目目录为:/home/project,那参考如下来进行 vim /home/project/automatic_git.sh #/bi ...

  3. hdu1175-连连看(dfs)

    一个一个走,记录方向改变了几次,不能超过两次,两次如果还没到终点return: #include<cstdio> #include<string.h> #define inf ...

  4. Hive_Hive的数据模型_视图

    - 视图是一种虚表,是一个逻辑概念:可以跨越多张表- 视图建立在已有表的基础上,视图赖以建立的这些表称为基表.- 视图可以简化复杂的查询. 创建视图 create view viewName as s ...

  5. Core2.0 项目到2.1

    Core2.0 项目到2.1 https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_10.html .NET Core 2.1 终于发布了, 赶紧升级一下. 一. ...

  6. NET Core 防止跨站请求

    ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击 什么是反伪造攻击? 跨站点请求伪造(也称为XSRF或CSRF,发音为see-surf)是对Web托管应用程序的攻击,因为恶意网站可 ...

  7. qt QMessageBox 中文乱码的问题

    QMessageBox::information(this,"Warn", "请插入U盘"); ==================> QMessageB ...

  8. mysql 中unsigned

    整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类 ...

  9. Java基础(Scanner、Random、流程控制语句)

    第3天 Java基础语法 今日内容介绍 u 引用数据数据类型(Scanner.Random) u 流程控制语句(if.for.while.dowhile.break.continue) 第1章 引用数 ...

  10. I/O操做总结(二)

    文件的操作 这一节我们来讨论关于文件自身的操作 不浪费唾沫了,用代码说话…… 实例1:创建文件对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...