这是一道交互题。
跳蚤国王正在带领着四万万跳蚤造计算机。
我们给每只跳蚤一个从
由于跳蚤国的文明比较落后,每只跳蚤只能存储一个
对于所有编号小于
我们记
对于编号大于等于
下面给出了几个关于
一开始(第
下面是一个例子:(id表示编号,t表示该跳蚤的值被确定的时间,箭头表示跳蚤的依赖关系)
我们可以把编号小于
由于跳蚤国王还要带着跳蚤们去舞会,你能使用的跳蚤的数量和时间都有限。
具体来说,你最多使用
作为奖励,跳蚤国王打算送你一个UOJ抱枕。 第一个通过最后一个测试点的选手将获得一个UOJ抱枕。 如果没有选手通过最后一个测试点,则第一个得到此题最高分的选手将获得一个UOJ抱枕。
任务
你需要编写一个函数 build_computer
,来帮助跳蚤国王造计算机。
build_computer(task_id, n, M, T)
task_id
: 子任务编号n
: 输入的 和 的位数M
: 除了编号小于 的跳蚤之外,最多能使用的跳蚤的数目T
: 你使用的所有跳蚤的值都要在 小时内被确定
你可以调用一个函数 add_flea(a, b, f)
,
表示增加一只跳蚤,对于第 add_flea
。
你还需要对每个 set_output
函数(可以按任意顺序调用)。
set_output(i, id)
表示设置输出的二进制数的第
子任务
子任务编号 | 需要计算的表达式 |
---|---|
1 | |
2 | |
3 | |
设 add_flea
的调用次数,
测试点编号 | 子任务编号 | 分值 | 备注 | |||
---|---|---|---|---|---|---|
1 | 1 | 1 | | | | |
2 | 1 | 2 | | | | |
3 | 1 | 5 | | | | |
4 | 1 | 9 | | 该测试点得分为 | ||
5 | 1 | 10 | | | | 该测试点得分为 |
6 | 2 | 3 | | | | |
7 | 2 | 6 | | | | |
8 | 2 | 13 | | | 该测试点得分为 | |
9 | 2 | 14 | | | 该测试点得分为 | |
10 | 3 | 4 | | | | |
11 | 3 | 7 | | | | |
12 | 3 | 8 | | | | |
13 | 3 | 17 | | | | 该测试点得分为 |
14 | 3 | 1 | | | | 第一个通过该测试点的选手将获得一个UOJ抱枕! |
实现细节
本题只支持C++。
你只能提交一个源文件实现如上所述的 build_computer
函数,并且遵循下面的命名和接口。
你需要包含头文件 king.h
。
void build_computer(int task_id, int n, int M, int T);
函数 add_flea
和 set_output
的接口信息如下。
int add_flea(int a, int b, int f);
void set_output(int i, int id);
评测方式
评测系统将读入如下格式的数据:
- 第1行:子任务编号
- 第2行:
如果你调用 add_flea
的次数大于 set_output
的次数不等于 set_output
的第一个参数调用 set_output
,
你的程序将被判为“Incorrect”。
在 build_computer
返回后,如果在
如果评测系统第一行输出了“Correct”,则第二行将会输出
时间限制:
空间限制:
在任何时候,交互库使用的内存都不会超过