Koala 发明了一个新游戏,来邀请你一起玩!游戏的开始,她会在桌上放
为了回答她的问题,你可以请 Koala 玩若干轮游戏。每一轮中,你会得到
Koala 非常懒,如果你和她玩太多轮游戏,她就会睡着。你的任务是通过尽可能少轮数的游戏,确定 Koala 的序列
任务
在这个任务中,你需要实现 minValue
, maxValue
, greaterValue
和 allValues
。
每个函数需要你确定序列
在每个函数中,参数 N 表示游戏中物品的个数,参数 W 表示你和Koala在每一轮游戏中拥有的石子数。
minValue(N, W)
--- 这个函数需要返回权值最小的物品的标号 ,即maxValue(N, W)
--- 这个函数需要返回权值最大的物品的标号 ,即greaterValue(N, W)
--- 这个函数需要比较物品 和物品 的权值,返回权值较大的物品的标号。具体来说,若 ,它应该返回 ,否则返回 。allValues(N, W, P)
--- 这个函数需要确定整个排列,并将其存放在给定的数组 中:具体来说, 应该保存物品 的权值 。
在每个测试点中,交互库会一次或多次调用这些函数中的一个。每次函数调用代表不同的任务,哪个函数会被调用、以及最多被调用多少次取决于子任务(见下文)。你可以认为 Koala 在每次函数调用前确定了她的序列
你实现的四个函数可以通过调用函数 playRound
来获取 Koala 的序列的相关信息。
playRound(B, R)
,请 Koala 和你玩一轮游戏。
数组 B 描述你在每个物品旁边放了多少蓝色石子。具体来说,对任意
交互库会把 Koala 的回应存放在你提供的数组 R 中。具体来说,对任意
每个子任务对你在每次游戏中调用 playRound
的次数有所限制。注意,调用次数越少你的得分可能会越高。(具体限制和评分方式参见下文)
样例数据: 分
- 有
个「样例数据」测试点,每个测试点恰好调用一次 个函数中的某一个。请看下文的__样例__获取各测试点的详细信息。
每次游戏中,你可以调用 playRound
至多
子任务 1: 分
- 在这个子任务中,交互库只会调用函数
minValue
,每个测试点中,这个函数最多会被调用 次。 - 每一次游戏中,你可以调用
playRound
至多 次。
子任务 2: 分
- 在这个子任务中,交互库只会调用函数
maxValue
。每个测试点中,这个函数最多会被调用 次。 - 每一次游戏中,你可以调用
playRound
至多 次。 - 这个子任务中,一个测试点的分数取决于每一轮游戏中
playRound
被调用次数的最大值 ,具体来说,你的得分为:- 若
,获得 分。 - 若
,获得 分。
- 若
子任务 3: 分
- 在这个子任务中,交互库只会调用函数
greaterValue
。每个测试点中,这个函数最多会被调用 次。 - 每一次游戏中,你可以调用
playRound
至多 次。 - 这个子任务中,一个测试点的分数取决于每一轮游戏中
playRound
被调用次数的最大值 ,具体来说,你的得分为:- 若
,获得 分。 - 若
,获得 分。 - 若
,获得 分。 - 若
,获得 分。
- 若
子任务 4: 分
- 在这个子任务中,交互库只会调用函数
allValues
,每个测试点中,这个函数最多会被调用恰好一次。 - 你可以调用
playRound
至多 次。
子任务 5: 分
- 在这个子任务中,交互库只会调用函数
allValues
,每个测试点中,这个函数会被调用恰好一次。 - 你可以调用
playRound
至多 次。 - 这个子任务中,一个测试点的分数取决于
playRound
被调用的次数 ,具体来说,你的得分为:- 若
,获得 分。 - 若
,获得 分。其中, 为不大于 的最大整数。举例来说,若 ,那么你的解答将获得 分。
- 若
时间限制:
空间限制:
本题不支持 hack。