C. 多边形之殇

    传统题 1000ms 256MiB

多边形之殇

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

polyomino -intro&outro mix-

ひとりぼっちで 今 私は答えを探す

パラドックスに阻まれて

それでも分かりたいことがあるの

とりとめのない単純作業でも少しでも正解に近づきたくて

参考翻译:

即便此刻我孤身一人 仍在寻找着答案 纵然被悖论所阻挡 仍有想要知晓的真相 哪怕是漫无目的的简单重复 也愿朝着正确答案多靠近一步

题目描述

有若干个小木棍,你可以把它们摆成多边形。

若干次询问,每次询问用 xx 根小木条能摆成的多边形的最大周长。

本题是一道交互题,只能使用 C++ 语言,你不需要也不应该实现 main 函数。

你需要在代码中引入 polygon.h

你需要实现以下函数:

  • void init(int n, std::vector<int> a);
    • 该函数输入一个正整数 nn 和一个长度恰好为 nn 的序列,表示小木棍个数与分别的长度。
    • 保证在每次调用中,此函数在 ask 函数之前被执行,且只执行一次。
  • std::vector<long long> ask(int q, std::vector<int> b);
    • 该函数可能会被调用多次。
    • 输入一个正整数 qq,和一个长度为 qq 的序列 bb,表示询问。
    • 返回一个数列,表示按照 bb 给出顺序的答案。

样例

考虑以下调用:

  • init(3,{3,4,5});
  • ask(1,{3});
    • 显然数据可以构成一个三角形,所以返回 3+4+5=123+4+5=12

数据范围和限制

程序每次运行,init 函数将会被调用 11 次,ask 函数将被调用 mm 次。(1mq1\le m\le \sum q

100%100\% 的数据,1n2×1051\le n\le 2\times 10^51q1061\le \sum q\le 10^61q1\le q1ai1091\le a_i\le 10^91bin1\le b_i\le n

子任务

  • (5 分)n10n\le 10q=1q=1
  • (2 分)bi2b_i\le 2
  • (18 分)n103n\le 10^3
  • (15 分)n104n\le 10^4
  • (17 分)m=1m=1
  • (2 分)ai=1a_i=1
  • (41 分)无特殊限制。

开启捆绑测试,并有合理的依赖。

样例交互库

本题下发文件中还有一个样例交互库。

样例交互库的输入格式为:

  • 第一行一个正整数 nn,表示序列长度。
  • 第二行 nn 个正整数,表示输入序列 aa
  • 第三行一个正整数 mm,表示询问次数。
  • 接下来 mm 行,每行第一个数 qq,接下来 qq 个正整数,表示询问长度和询问内容。

不满足交互库输入格式和数据范围的调用未定义。

交互库不会检查你的输入和答案是否合法。

如果运行正常,交互库会在标准输出(stdout)中输出 mm 行,每行 qq 个正整数表示你的程序的返回值。

NexusOJ 元旦快乐重现赛

未参加
状态
已结束
规则
乐多
题目
4
开始于
2026-1-1 0:00
结束于
2026-1-4 0:00
持续时间
72 小时
主持人
参赛人数
2