QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 512 MB 總分: 100 互動

#6982. 三角剖分

统计

Anna 画了一个正多边形,其 $n$ 个顶点按顺时针方向编号为 $0$ 到 $n-1$。随后,她通过绘制 $n-3$ 条互不相交(除端点外)的对角线将其三角剖分。对角线定义为连接两个不相邻顶点的直线。

首先,定义从顶点 $A$ 到对角线 $D$ 的距离。假设我们从顶点 $A$ 出发,沿顺时针方向移动到下一个顶点,直到到达 $D$ 的其中一个端点。所经过的边数称为 left_distance。类似地,right_distance 是从 $A$ 出发沿逆时针方向移动直到到达 $D$ 的端点所经过的边数。从 $A$ 到 $D$ 的距离定义为 left_distanceright_distance 中的最大值。

在示例图片中,从顶点 $0$ 到对角线 $(1,5)$ 的距离为 $2$,其中 left_distance 为 $1$,right_distance 为 $2$。对于对角线 $(0,5)$,从顶点 $0$ 出发的距离为 $5$,其中 left_distance 为 $5$,right_distance 为 $2$。

Anna 想给 Jacob 出一道难题。Jacob 不知道具体画了哪些对角线。他只知道 $n$ 的值,但可以多次询问 Anna 关于某些顶点对的信息,Anna 会告诉他这些顶点之间是否存在对角线。Jacob 的目标是找到距离顶点 $0$ 最近(距离定义如上)的已绘制对角线。你需要通过询问有限次数的问题来帮助他实现目标。

数据范围

  • $5 \le n \le 100$

实现细节

你需要在你的提交中实现以下函数:

int solve(int n)
  • 该函数会被评测程序调用恰好一次。
  • $n$:多边形的顶点数。
  • 该函数应返回连接某两个顶点 $a$ 和 $b$ 的对角线,以整数 $a \cdot n + b$ 的形式表示。
  • 如果存在多条距离最小的对角线,你可以返回其中任意一条。

上述函数可以调用以下函数:

int query(int x, int y)
  • $x$:第一个顶点编号。
  • $y$:第二个顶点编号。
  • $0 \le x, y \le n-1$
  • 如果 $x$ 和 $y$ 之间存在对角线,则返回 $1$,否则返回 $0$。

样例

以下是评测程序的交互示例。该输入对应于上方的图片。 输入仅包含一行,为一个整数:$n$。 样例评测程序会将每次询问输出到标准输出,你需要手动输入 $1$ 或 $0$ 来回答。

样例 1

7

样例 1 交互过程

solve(7)
query(0, 3)
query returns 0
query(0, 5)
query returns 1
query(1, 5)
query returns 1
solve returns 1 * 7 + 5 = 12
Correct!

子任务

设 $q$ 为你在单个测试点中使用的询问次数。此外,令 $w = \frac{n \cdot (n-3)}{2}$。

  • 如果你询问了无效问题或猜测错误,该测试点得 $0\%$ 的分数。
  • 如果 $q > w$,该测试点得 $0\%$ 的分数。
  • 如果 $n < q \le w$,该测试点得 $10 + 60 \cdot \frac{w - q}{w - n} \%$ 的分数。
  • 如果 $q \le n$,该测试点得 $100\%$ 的分数。

说明

仅存在一个子任务,你的总分为各测试点得分之和。但在比赛期间,你只能看到一半测试点的得分(价值 $50$ 分)。其余得分将在比赛结束后揭晓。你的最终得分为所有提交中总分的最高值。

Figure 1. 示例图片,展示了从顶点 0 到对角线 (1,5) 的距离计算。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.