AT_ahc044_a.[AHC044A] Cleaning Up

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

某公司有 NN 名员工,每人被分配了从 00 到 N−1N-1 的编号。你需要为每位员工 ii(0≤i≤N−10 \leq i \leq N-1)决定整数 aia_i 和 bib_i(允许 ai=bia_i = b_i),并按照以下规则分配每周的值日生:

  • 第 1 周,由员工 00 担任值日生。
  • 之后的每一周,假设上一周的值日生是员工 xx,且截至上周结束,员工 xx 已经被分配为值日生 tt 次,则本周的值日生按如下方式决定:
    • 如果 tt 是奇数:本周值日生为员工 axa_x。
    • 如果 tt 是偶数:本周值日生为员工 bxb_x。

对于每个 ii(0≤i≤N−10 \leq i \leq N-1),给定未来 L=500 000L = 500\,000 周内希望员工 ii 被分配为值日生的目标次数 TiT_i。实际分配给员工 ii 的次数记为 tit_i,请尽量使总误差 ∣t0−T0∣+∣t1−T1∣+⋯+∣tN−1−TN−1∣\left|t_0 - T_0\right| + \left|t_1 - T_1\right| + \cdots + \left|t_{N-1} - T_{N-1}\right| 尽可能小。

输入格式

输入通过标准输入按以下格式给出。

NN LL T0T_0 T1T_1 ⋯\cdots TN−1T_{N-1}

  • 所有测试用例中,员工数 NN 固定为 100100。
  • 所有测试用例中,周数 LL 固定为 500 000500\,000。
  • 0≤Ti≤10 0000 \leq T_i \leq 10\,000。
  • T0+T1+⋯+TN−1=LT_0 + T_1 + \cdots + T_{N-1} = L。
  • 输入均为整数。

输出格式

请按以下格式输出到标准输出。

a0a_0 b0b_0
a1a_1 b1b_1
⋮\vdots
aN−1a_{N-1} bN−1b_{N-1}

其中,若存在 ii(0≤i≤N−10 \leq i \leq N-1)使得 aia_i 或 bib_i 不满足 0≤ai≤N−10 \leq a_i \leq N-1 或 0≤bi≤N−10 \leq b_i \leq N-1,则判定为 WA。

查看示例

说明/提示

故事背景

某公司正在致力于打造更舒适的工作环境。从新员工入职的 4 月起,公司决定每周进行一次内部清扫。然而,值日生的分配并不简单。例如,不能让某个人负担过重,尤其是新员工的负担要特别少。此外,值日生的分配方式还要便于记忆,比如“X 之后是 Y 或 Z”。请尽量优化分配方式,使其尽量符合这些要求。

得分

若你输出的分配方式的总误差为 EE,则得分为 106−E10^6-E。保证得分不会为负。

共有 150 个测试用例,所有用例的得分之和为你的提交得分。如果有任意一个用例输出不合法或超时,则整份提交判为 WA 或 TLE。比赛期间以最高得分计入最终排名,赛后不再进行系统测试。若多名选手得分相同,则排名并列。

输入生成方法

记 rand(L,U)\mathrm{rand}(L, U) 为在 LL 到 UU 之间均匀随机生成一个整数,输入生成方法如下:

  1. 对每个 0≤i≤N−20 \leq i \leq N-2,用 Ti=rand(0,10000)T_i = \mathrm{rand}(0, 10000) 生成。
  2. 计算总和 S=T0+⋯+TN−2S = T_0 + \cdots + T_{N-2},若 0≤L−S≤100000 \leq L-S \leq 10000,则令 TN−1=L−ST_{N-1} = L-S 并确定输入,否则回到第 1 步重新生成。

工具(输入生成器与可视化工具)

比赛期间,禁止分享可视化结果、解法或讨论。请注意遵守。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页