#P15058. [2026省选联测]删除数据
[2026省选联测]删除数据
这是一道交互题。
题目描述
flow 的数据库遭到了 rewo 的攻击!
flow 原本有一个 的排列 ,rewo 又在这之中插入了一个 的数 构成了一个长度为 的数列 。
由于这个数列比较长,flow 没有办法直接看出来 是什么,但是他为你提供了一个接口函数,请你在 次调用接口函数内解决这个问题。
实现细节
你不需要,也不应该实现主函数。
你需要导入头文件 delete.h。
你需要实现以下函数:
int finderr(int n)
该函数恰好被调用一次。
该函数应该返回一个整数,即 的值。
在该函数中,你可以调用以下函数:
bool check(std::vector<int> vec, int y)
vec: 一个长度若干的数组(设长度为 )包含 个两两不同的 中的自然数。y: 一个 的自然数。- 该函数返回一个
bool值,表示是否存在一个自然数 ,满足 。 - 该函数可以被调用至多 次。
下发文件中包含一个实现示例 delete.cpp,一个样例交互库 delete.h。
输入格式
你不需要,也不应该从标准输入中读入任何东西。
评测文件的输入方式为:
第一行输入一个整数 。
第二行输入 个整数,表示 。
输出格式
你不需要,也不应该向标准输出中输出任何东西。
评测文件的输出方式为:
一行输出一个正整数 ,表示答案。
说明/提示
本题使用子任务(Subtask)计分。
对于所有测试数据,保证:。
| 子任务编号 | 特殊性质 | 分值 | |
|---|---|---|---|
| A | |||
| ^ | |||
| 无 | |||
| ^ |
特殊性质 A:保证 生成方式为:先随机生成 ,再在 的随机位置插入 。
评分方式
对于一个测试点:
若你 finderr 函数的返回值不为 ,则得 分。
否则记 为你的询问次数,则你的得分 按以下方式计算:
$$f(Q)=\begin{cases} 10000 &, 0\le Q\le2000\\9000e^{\frac{1}{4000}\times(2001-x)} &, 2001\le Q \le 20000\\ 0 &, Q>20000\end{cases}$$则 。
一个子任务的得分为其中所有测试点中的最小值。
的第二部分图像:
