#P11407. [RMI 2020] 寻线 / Nice Lines
[RMI 2020] 寻线 / Nice Lines
Description
这是一道(函数式)交互题。
二维笛卡尔坐标系上有 条直线,描述为 。其中, 为整数,且 。
每次可以选择一个实数点 ,询问 到这 条直线的(欧几里得)距离之和。通过询问找出这 条直线的解析式。
有两个参数限制询问次数:
- 欲获得满分,询问次数应不大于 ;
- 欲获得非零分,询问次数应不大于 。
此外,保证直线两两不平行。
实现细节
你不需要,也不应该实现 main 函数。
你需要实现以下的函数:
void solve(int subtask_id, int N);
交互库会调用 solve 函数恰好一次。参数的含义:
subtask_id:子任务编号。N:直线数量。
你可以调用以下的函数:
long double query(long double x, long double y);
调用此函数,返回点 到每条直线的(欧几里得)距离和。你需要保证 。
void the_lines_are(std::vector<int> a, std::vector<int> b)
调用此函数恰好一次,描述你找到的 条直线。
Input Format
Sample Grader 按照以下格式读取输入:
第一行,一个正整数 ,表示子任务编号;
第二行,三个正整数 ;
接下来 行,每行两个整数 。
注意你需要自行修改 Sample Grader 的 compute_query() 以获得正确的距离计算结果。
Output Format
Sample Grader 将输出选手程序回答的 条直线,以及使用的询问次数。
1
1 10000 10000
1 0
Hint
对于 的数据,保证:
- ;
- ;
- 直线两两不平行。
| 子任务编号 | 特殊性质 | 得分 | |||
|---|---|---|---|---|---|
| A | |||||
特殊性质 A:。
计分方式:令你询问了 次,则得分系数 计算公式如下
$$k=\begin{cases} 1, & x\le q \\ \displaystyle 1-0.7\cdot \frac{x-q}{Q-q} & q\lt x\le Q \\ 0, & x\gt Q \end{cases}$$每个子任务得分为得分系数的最小值乘上子任务满分。
京公网安备 11011102002149号