#P7168. [eJOI2020 Day1] Triangulation
[eJOI2020 Day1] Triangulation
题目背景
题目中的 代表一条从 连到 的对角线。
定义正多边形的顶点 到顶点 的 eJ 距离为点 顺时针走到点 需要的边数和点 逆时针走到点 需要的边数的最大值。根据这个定义,也可以拓展出正多边形的顶点 到一条正多边形的对角线 的 eJ 距离的定义,即点 顺时针走到对角线 的一个端点(离的最近的端点)需要的边数和逆时针走需要的边数的最大值。
比如点 到对角线 的 eJ 距离为 ,顺时针走需要经过 条边,逆时针要经过 条,答案为 。
题目描述
给定一个 边形,点顺时针编号为 ,现在小 A 画了 条对角线,保证这 条对角线除了顶点外没有额外交点。
现在小 A 想让小 J 猜猜哪条对角线离点 的 eJ 距离最近,并回答这个距离。
小 J 并不能通过读心术知道答案,所以他只能找小 A 索要一些线索。小 A 给了小 J 的值,并且答应小 J 可以找小 A 询问一对顶点之间是否有对角线,但小 J 的询问次数有限制。
小 J 还要 AK eJOI,所以这个问题就交给了你。
交互规则
你需要调用 triangulation.h
头文件。
int solve(int n)
- 这个函数只能被调用一次。
- :多边形顶点个数。
- 假设答案对角线为 ,这个函数应该返回 。
- 如果有多条对角线离点 最近,可以只返回其中一条。
solve 函数可以调用若干次下面这个函数:
int query(int x, int y)
- :代表一组询问。
- 。
- 如果 存在,返回 ,否则返回 。
7
提示
样例 1
样例输入格式仅包含一个整数 。
调用函数 | 返回值 |
---|---|
solve(7) |
|
query(0,3) |
|
query(0,5) |
|
query(1,5) |
|
solve 函数返回 | |
正确 |
数据规模与约定
对于 的数据,。
假设 为你单组数据的询问次数,令 ,你单组数据的分数为:
- 询问不合法,答案错误或 ,你会得到 的分数。
- ,你会得到 的分数。
- ,你会得到 的分数。
感谢
https://www.luogu.com.cn/user/174045
checker & grader。