#HK3649. 「2021 集训队互测」WereYouLast
「2021 集训队互测」WereYouLast
注意事项
由于编译上的问题,请在你的代码前加入如下语句:
#include "wereyoulast.h"
「影响」是指,只要某个位置被 query 或者 modify 了那么就算被影响了;禁止在 WereYouLast 中递归调用自己。
题目描述
这是一道交互题。
在本题中,你不需要实现主函数。你需要实现一个函数
bool WereYouLast(int n,int m)
这个函数会被调用恰好 次,你需要正确地返回这是否是最后一次调用。
交互库会为你的程序提供 个全局 bool 存储单元,它们的编号为 , 初始时的值为 False。你的程序可以调用如下函数:
bool query(int pos):该函数会返回第 pos 个存储单元的值。
void modify(int pos,bool v):该函数会将第 pos 个存储单元的值修改为
v。
记在第 i 次调用中,你的程序的 query/modify 操作影响到了 个不同的位置,你需要最小化 ,在某些测试点中,最小化 也可以获得一定的分值。
注意:你的程序不能以任何自定义的形式在多次调用之间交换信息,这些被禁止的形式包括但不限于使用全局变量(允许当常量用的全局变量(即,你没有通过修改全局变量来传递信息)),或是含有 static 关键词的变量。禁止任意形式的攻击交互库,这些被禁止的形式包括但不限于修改交互库中的全局变量,或者在代码中使用主函数。得分程序可能会被人工检查,选手也可以对进行被禁止行为的程序进行申诉,若行为属实,将取消对应程序在本题的成绩。
注意:为了防止过度卡评测,在一次 WereYouLast 的调用中,你不能对同一个位置进行多于 次的 query 或者 多于 次的 modify,如果在一次 WereYouLast 的调用中你的程序对一个位置调用了多于 次的 query 或者多于 次的 modify,超出上限的操作将会被判为 Invalid Operation,你的程序会被判为 Wrong Answer.
输入格式
可执行文件从标准输入中读取数据。
输入包含一行两个整数 表示程序调用次数,和全局存储单元的个数。
如何测试你的程序
下发文件中包含一个参考程序 sample.cpp。
下发样例交互库 grader.cpp,设你的代码叫做
code.cpp 你可以采用如下命令进行编译:
g++ code.cpp -o code grader.cpp -O2 -std=c++11
你不能通过更改交互库得分。
你可以认为,最终测试的交互库与样例交互库的运行时间相差在 以内,空间限制相差在 以内。
评分标准
每个测试点有固定的 和若干个评分参数 。
如果你的程序不能正确地完成任务,你将得到 分。
在完成任务的基础上,
在测试点 中, 每 一个评分参数就会得到 分。
在测试点 中, 每 一个评分参数就会得到 分, 每 一个评分参数就会得到 分。
在测试点 中, 每 一个评分参数就会得到 分, 每 一个评分参数就会得到 分。
在测试点 中, 每 一个评分参数就会得到 分, 每 一个评分参数就会得到 分。
数据范围
| 测试点编号 | 测试点总分 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 10 | ||||||||||||
| 2 | 20 | ||||||||||||
| 3 | 30 | ||||||||||||
| 4 | 40 | ||||||||||||