QOJ.ac

QOJ

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

#4205. 艺术收藏

الإحصائيات

虽然你作为艺术品大盗的日子早已过去,但这并不意味着你对当代艺术失去了兴趣。不幸的是,你最近忙于 BOI 的筹备工作,以至于忘记了 $N$ 个最热门的当代艺术收藏品(编号从 $1$ 到 $N$)按价值的排名。由于直接询问他人会非常尴尬,你不得不采取其他手段:匿名在线排名。

也就是说,你将反复执行以下操作:首先猜测一个 $N$ 个艺术收藏品的排名(基于它们的价值,最昂贵的排在最前面),然后在某个网站上发布这个排名,最后等待收藏品所有者在评论区中的投诉。由于你不想阅读每一条评论,你只会记录你收到的投诉总数。幸运的是,所有者的行为非常可靠:对于你猜测的排名中,每一个排名高于其真实排名的收藏品,其所有者都会投诉一次,尽管该收藏品在真实排名中并没有那么高;但如果收藏品的排名被你错误地猜低了,则不会有所有者投诉。你可以假设所有收藏品的价值都是不同的。

然而,由于发布排名会危及你的匿名性,你希望在找到正确的收藏品排名之前,最多只发布 $4\,000$ 次猜测排名。编写一个程序来帮助你决定发布哪些排名!

交互

这是一个交互式任务。你必须实现函数 void solve(int N),其中 $N$ 如上所述。对于每个测试用例,该函数会被调用恰好一次。在 solve 内部,你可以使用评测机提供的以下其他函数:

  • int publish(std::vector<int> R):在网站上发布一个收藏品排名 $R$。$R$ 必须是 $1$ 到 $N$ 的一个排列,并将你猜测价值更高的收藏品排在前面。该函数返回发布此排名后你收到的投诉数量。每个测试用例中,你最多可以调用此函数 $4\,000$ 次。
  • void answer(std::vector<int> R):声明你已经找到了正确的收藏品排名 $R$,格式与 publish 相同。你必须恰好调用一次 answer;之后你的程序将自动终止。

如果你的任何函数调用不满足上述约束,你的程序将立即终止,并被判定为“不正确”(Not correct)。你不得向标准输出写入内容或从标准输入读取内容;否则你可能会收到“安全违规”(Security violation!)的判决。

你必须在源代码中包含文件 art.h。为了在本地测试你的程序,你可以将其与 sample_grader.cpp 链接,该文件可以在 CMS 中此任务的附件中找到(参见下文关于样例评测机的描述,并查看 sample_grader.cpp 以获取关于如何将其与你的程序一起运行的说明)。附件中还包含一个示例实现 art_sample.cpp

数据范围

我们始终有 $2 \le N \le 4\,000$。

  • 子任务 1(5 分):$N \le 6$
  • 子任务 2(15 分):$N \le 40$
  • 子任务 3(15 分):$N \le 250$
  • 子任务 4(15 分):$N \le 444$
  • 子任务 5(20 分):$N \le 2\,000$
  • 子任务 6(30 分):无额外限制。

样例

考虑一个 $N = 3$ 的测试用例,其中收藏品 $1$ 最昂贵,其次是 $3$,收藏品 $2$ 最便宜。首先,评测机调用你的函数 solvesolve(3)。然后,你的程序与评测机之间可能的交互如下:

你的程序 返回值 说明
publish({1, 2, 3}) $1$ 你收到来自收藏品 $3$ 所有者的一条投诉
publish({2, 3, 1}) $3$ 你收到来自收藏品 $1$ 所有者和收藏品 $3$ 所有者的投诉
answer({1, 3, 2}) 你确信已经找到了正确的排名

你的解决方案是正确的并被接受。

评测机

样例评测机首先在标准输入中期望两行。第一行应包含整数 $N$。第二行应包含一个由 $N$ 个空格分隔的整数组成的列表,即收藏品的正确排名,格式与 publishanswer 相同。然后,评测机调用 solve(N) 并将你的程序调用的所有评测机函数协议写入标准输出。终止时,它会将以下消息之一写入标准输出:

  • Invalid input.:输入到评测机的标准输入不符合上述格式。
  • Invalid published ranking.:你调用 publish 时使用了无效参数。
  • Too many published rankings.:你调用 publish 的次数超过了 $4\,000$ 次。
  • No answer.:函数 solve 终止时没有调用 answer
  • Wrong answer.:你调用 answer 时使用了错误的排名。
  • Correct: p published ranking(s).:你调用 answer 时使用了正确的排名,且调用了 $p$ 次 publish

相比之下,实际用于评判你程序的评测机只会输出 Not correct(针对上述任何错误)或 Correct。样例评测机和用于评判你程序的评测机都会在发生上述任何错误时,或在你的程序调用 answer 后,自动终止你的程序。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#917EditorialOpenNew Editorial for Problem #4205Zero_OP2026-02-02 17:40:49View

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.