QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 64 MB مجموع النقاط: 100 تفاعلية

#4735. 领事

الإحصائيات

在 Reme 正在举行一场领事选举。这次选举共有 $N$ 名选民,每名选民可以从 $1\,000\,000\,000$ 名候选人中选择一人投票。如果一名候选人的得票数严格超过总票数的三分之一,则该候选人被视为获胜者(这是因为 Reme 每年选出两名领事)。现在,你是一名渴望操纵选举的人。为了更有效地操纵投票,你需要知道至少一名潜在的获胜者。不幸的是,尽管每位选民都已经投了票,但投票结果并不公开——至少在没有付出代价的情况下是不公开的。此外,已经统计过选票的旧领事可以告诉你特定候选人获得的票数——同样,这需要付出代价。

更正式地说,你需要考虑一个包含 $N$ 个整数的隐藏序列 $v[1] \dots v[N]$,其值至少为 $0$ 且小于 $1\,000\,000\,000$。你可以对该序列执行两种类型的查询: 你可以查出序列中特定元素 $v[i]$ 的值。 你可以查看特定值 $x$ 在序列中出现的次数。

你需要找到一个在序列中出现次数严格大于 $N/3$ 的值 $x$,同时使你执行的查询次数尽可能少。

题目描述

给定 $N$,使用给定的查询找出选举的任意一名获胜者,或者宣布不存在获胜者。

交互

这是一道交互题。选手需要包含头文件 grader.h 并实现函数 void solve(int N),其中参数 $N$ 代表题目描述中的 $N$。该函数需要解决一个任务实例(注意:在一次程序运行中,该函数可能会被调用多次)。为了解决任务,选手可以使用以下函数:

  • int kth(int i) — 返回 $v[i]$ 的值。
  • int cnt(int x) — 返回 $x$ 在数组 $v$ 中的出现频率。
  • void say_answer(int a) — 如果 $a$ 在 $0$ 到 $1\,000\,000\,000 - 1$ 之间,则表示 $a$ 是选举的获胜者;如果 $a$ 为 $-1$,则表示不存在获胜者。如果存在获胜者但 $a$ 不是获胜者,或者不存在获胜者但 $a$ 不为 $-1$,或者 $a$ 既不是有效的候选人也不是 $-1$,则选手的程序将获得“Wrong Answer!”判决。

数据范围

子任务 分数 限制
1 15 分 $N \le 50$
2 20 分 $N \le 100$
3 65 分 $N \le 1000$

评分

设 $Q$ 为单个测试文件中任意测试用例中执行的最大查询次数(不包括 say_answer 的调用)。

子任务 1: 如果 $Q \le 50$,你将获得该测试用例 100% 的分数。 如果 $Q > 50$,你将获得该测试用例 0% 的分数。

子任务 2: 如果 $Q \le 60$,你将获得该测试用例 100% 的分数。 如果 $60 < Q \le 110$,你将获得 $(220-2Q)\%$ 的分数。 * 如果 $Q > 100$,你将获得该测试用例 0% 的分数。

子任务 3: 如果 $Q \le 60$,你将获得该测试用例 100% 的分数。 如果 $60 < Q$,你将获得 $(0.9^{Q - 60} \times 100)\%$ 的分数。

说明:测试用例数量最多为 16000。

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.