AT_ahc044_a.[AHC044A] Cleaning Up
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
某公司有 N 名员工,每人被分配了从 0 到 N−1 的编号。你需要为每位员工 i(0≤i≤N−1)决定整数 ai 和 bi(允许 ai=bi),并按照以下规则分配每周的值日生:
- 第 1 周,由员工 0 担任值日生。
- 之后的每一周,假设上一周的值日生是员工 x,且截至上周结束,员工 x 已经被分配为值日生 t 次,则本周的值日生按如下方式决定:
- 如果 t 是奇数:本周值日生为员工 ax。
- 如果 t 是偶数:本周值日生为员工 bx。
对于每个 i(0≤i≤N−1),给定未来 L=500000 周内希望员工 i 被分配为值日生的目标次数 Ti。实际分配给员工 i 的次数记为 ti,请尽量使总误差 ∣t0−T0∣+∣t1−T1∣+⋯+∣tN−1−TN−1∣ 尽可能小。
输入格式
输入通过标准输入按以下格式给出。
N L T0 T1 ⋯ TN−1
- 所有测试用例中,员工数 N 固定为 100。
- 所有测试用例中,周数 L 固定为 500000。
- 0≤Ti≤10000。
- T0+T1+⋯+TN−1=L。
- 输入均为整数。
输出格式
请按以下格式输出到标准输出。
a0 b0
a1 b1
⋮
aN−1 bN−1
其中,若存在 i(0≤i≤N−1)使得 ai 或 bi 不满足 0≤ai≤N−1 或 0≤bi≤N−1,则判定为 WA。
说明/提示
故事背景
某公司正在致力于打造更舒适的工作环境。从新员工入职的 4 月起,公司决定每周进行一次内部清扫。然而,值日生的分配并不简单。例如,不能让某个人负担过重,尤其是新员工的负担要特别少。此外,值日生的分配方式还要便于记忆,比如“X 之后是 Y 或 Z”。请尽量优化分配方式,使其尽量符合这些要求。
得分
若你输出的分配方式的总误差为 E,则得分为 106−E。保证得分不会为负。
共有 150 个测试用例,所有用例的得分之和为你的提交得分。如果有任意一个用例输出不合法或超时,则整份提交判为 WA 或 TLE。比赛期间以最高得分计入最终排名,赛后不再进行系统测试。若多名选手得分相同,则排名并列。
输入生成方法
记 rand(L,U) 为在 L 到 U 之间均匀随机生成一个整数,输入生成方法如下:
- 对每个 0≤i≤N−2,用 Ti=rand(0,10000) 生成。
- 计算总和 S=T0+⋯+TN−2,若 0≤L−S≤10000,则令 TN−1=L−S 并确定输入,否则回到第 1 步重新生成。
工具(输入生成器与可视化工具)
- 网页版:比本地版性能更高,支持动画显示。
- 本地版:需安装 Rust 语言 编译环境。
- Windows 版编译好的二进制:如不方便配置 Rust 环境可直接使用。
比赛期间,禁止分享可视化结果、解法或讨论。请注意遵守。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?