简答题

课程名称:蓝桥C++

题目:活动人数 时间限制: 1000MS 内存限制: 65536KB 题目描述: 编程实现:活动人数 有一个大型企业集团,由N个部门组成,编号从1到N。这些部门之间的层次关系形成了一个树状结构,一个上级部门可能会有1个或多个直接下级部门,一个下级部门只有一个直接上级部门。 本月集团举办了一个大型活动,这次的活动组织方按如下要求安排活动: 1. 来的人越多越好; 2. 如果一个上级部门参加本次活动,那么他们的直接下级部门就不能参加,而他的间接下集部门可以参加(如下图,如果部门1参加,那么部门2、3不能参加,而部门4、5、6可以参加)。 请你帮他们计算一下,如何安排可以使参加活动的人数最多,并输出参加活动的最多人数。 例如:当N=6,每个部门编号为1到6,部门上下级关系和部门的人数如下图所示: 注意:示例中,部门1是层级最高的部门,没有直接上级,故将其直接上级部门设为0; 当安排(1、4、5、6)这4个部门参加活动时,人数最多,为11,所以输出11。 输入描述 第一行输入一个正整数N(1≤N≤100000),表示集团所有部门的数量 接下来有N行,每行输入三个非负整数F、S和C,(0≤F≤N,1≤S≤N,F≠S,1≤C≤1000),F表示是部门S的直接上级,C表示部门S的人数,整数之间用一个空格隔开 注意:如果是最上层的部门,其直接上级部门编号为0 输出描述 输出一个整数,表示参加活动的最多人数 样例输入 6 0 1 2 1 2 4 1 3 3 2 4 3 3 5 2 3 6 4 样例输出 11

简答题

课程名称:蓝桥C++

题目:数字游戏 时间限制: 1000MS 内存限制: 65536KB 题目描述: 编程实现:数字游戏 老师给出了一组数,要求小蓝对这组数进行调整,调整的规则如下: 1. 第1次,从这组数中选出一个最小的数,把它调整为和第二小的数一样大; 2. 第2次,再从这组数中选出一个最大的数,把它调整为和第二大的数一样大; 3. 重复执行1、2步骤; 4. 当这组数中所包含的不同的数少于3个时,结束调整。 现在给定了一组数,请帮小蓝编写程序计算出总共的调整次数,以及调整结束时这组数中的最小数和最大数。 例1: 当这组数是 2 2 2 2时,这组数中所包含的不同的数少于3个(只有2这一种数),无需调整,最后输出: 0 2 2 例2: 当这组数是 1 3 4 2时,调整过程如下: 1. 先将这组数中最小的数1,改成2,这组数变为:2 3 4 2 2. 再将这组数中最大的数4,改成3,这组数变为:2 3 3 2 这时,这组数中只包含2、3两个数了,满足规则4,调整结束,总共调整了2次,故最后输出: 2 2 3 输入描述 第一行输入一个正整数N(3≤N≤1000000),表示这组数中数的个数 第二行输入N个正整数(1≤正整数≤1000000),正整数之间用一个空格隔开 输出描述 输出一行,包含三个整数,分别是总的调整次数、调整结束时的最小值和最大值,整数之间用一个空格隔开 样例输入 4 1 3 4 2 样例输出 2 2 3