AT_ahc031_a.[AHC031A] Event Hall

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

有一个可以用纵横长度均为 WW 的网格表示的活动大厅。最左上角的格点坐标为 (0,0)(0,0),从这里向下走 ii 格、向右走 jj 格后的格点坐标为 (i,j)(i,j)。最右下角的格点坐标为 (W,W)(W, W)。

给定 DD 天的预约情况。每一天的预约数均为 NN,第 d=0,1,⋯ ,D−1d=0,1,\cdots,D-1 天的第 k=0,1,⋯ ,N−1k=0,1,\cdots,N-1 个预约希望租用面积不少于 ad,ka_{d,k} 的矩形区域。所出租的矩形的形状和位置可以自由选择,但必须与坐标轴平行,且每个顶点都必须在格点上。此外,同一天内不同预约对应的矩形不能有正面积的重叠。未被出租的空余空间可以保留。

对于第 dd 天第 kk 个预约,所出租的矩形区域记为 Rd,kR_{d,k},其面积为 bd,kb_{d,k}。若 ad,k>bd,ka_{d,k} > b_{d,k},则会产生 100×(ad,k−bd,k)100\times(a_{d,k}-b_{d,k}) 的费用;若 ad,k≤bd,ka_{d,k}\leq b_{d,k},则不会产生费用。

对于每个矩形 Rd,kR_{d,k},其外周中不属于网格外周的部分需要设置隔断,相反,其他地方不得设置隔断。在第 dd 天,需要根据第 d−1d-1 天的隔断配置,进行隔断的安装和拆除以满足上述条件。第 dd 天安装和拆除的隔断总长度为 LdL_d 时,会产生 LdL_d 的费用。但特别地,第一天规定 L0=0L_0=0。

更详细地,LdL_d 的计算如下。对于每个 d=0,⋯ ,D−1d=0,\cdots,D-1,对于网格内部(不包括外周)的每一条横向线段 (i,j)−(i,j+1)(i,j)-(i,j+1)(1≤i≤W−1, 0≤j≤W−11\leq i\leq W-1,\ 0\leq j\leq W-1),若该线段在某个 Rd,kR_{d,k} 的外周上,则定义 Hd,i,j=1H_{d,i,j}=1,否则 Hd,i,j=0H_{d,i,j}=0。此时,若 Hd−1,i,j≠Hd,i,jH_{d-1,i,j}\neq H_{d,i,j},则 LdL_d 增加 1。类似地,对于每一条纵向线段 (i,j)−(i+1,j)(i,j)-(i+1,j)(0≤i≤W−1, 1≤j≤W−10\leq i\leq W-1,\ 1\leq j\leq W-1),若该线段在某个 Rd,kR_{d,k} 的外周上,则定义 Vd,i,j=1V_{d,i,j}=1,否则 Vd,i,j=0V_{d,i,j}=0。此时,若 Vd−1,i,j≠Vd,i,jV_{d-1,i,j}\neq V_{d,i,j},则 LdL_d 增加 1。

请决定每一天每个预约所分配的矩形区域,使得总费用尽可能小。

输入格式

输入通过标准输入给出,格式如下:

WW DD NN a0,0a_{0,0} $ \cdots $ a0,N−1a_{0,N-1}
$ \vdots $
aD−1,0a_{D-1,0} $ \cdots $ aD−1,N−1a_{D-1,N-1}

  • 网格的纵横长度 WW 固定为 W=1000W=1000。
  • 天数 DD 满足 5≤D≤505\leq D\leq 50。
  • 每天的预约数 NN 满足 5≤N≤505\leq N\leq 50。
  • 第 dd 天第 kk 个预约希望的面积 ad,ka_{d,k} 是满足 1≤ad,0≤⋯≤ad,N−11\leq a_{d,0}\leq \cdots\leq a_{d,N-1} 的整数,且 ad,0+⋯+ad,N−1≤W2a_{d,0}+\cdots+a_{d,N-1}\leq W^2。

输出格式

对于第 dd 天第 kk 个预约,若分配的矩形左上角顶点坐标为 (id,k,jd,k)(i_{d,k},j_{d,k}),右下角顶点坐标为 (id,k′,jd,k′)(i_{d,k}',j_{d,k}'),则请按如下格式输出到标准输出:

i0,0i_{0,0} j0,0j_{0,0} i0,0′i_{0,0}' j0,0′j_{0,0}'
$ \vdots $
i0,N−1i_{0,N-1} j0,N−1j_{0,N-1} i0,N−1′i_{0,N-1}' j0,N−1′j_{0,N-1}'
$ \vdots $
iD−1,0i_{D-1,0} jD−1,0j_{D-1,0} iD−1,0′i_{D-1,0}' jD−1,0′j_{D-1,0}'
$ \vdots $
iD−1,N−1i_{D-1,N-1} jD−1,N−1j_{D-1,N-1} iD−1,N−1′i_{D-1,N-1}' jD−1,N−1′j_{D-1,N-1}'

每个矩形必须满足 0≤id,k<id,k′≤W0\leq i_{d,k}<i_{d,k}'\leq W 且 0≤jd,k<jd,k′≤W0\leq j_{d,k}<j_{d,k}'\leq W。若不满足此条件,将被判定为 WA。

查看示例

输入输出样例

  • 输入#1

    1000 5 10
    6508 11666 12167 16717 46095 55928 56542 127260 200961 202211
    11754 15667 26620 31851 48890 50181 52520 53150 263650 280526
    7171 7218 14268 26231 37133 47199 93385 131356 174634 189807
    10290 15811 16235 39805 45168 75830 76161 137648 148368 152504
    6553 22994 44284 45120 67646 68899 98726 129109 138615 247097

    输出#1

    0 43 23 326
    747 654 824 843
    863 2 1000 469
    824 621 892 869
    892 469 983 977
    23 19 676 105
    58 917 742 1000
    494 398 747 917
    85 105 863 398
    6 398 403 911
    166 917 329 1000
    6 848 266 911
    403 803 588 1000
    863 633 983 977
    361 19 494 398
    361 398 494 803
    494 105 588 767
    863 0 1000 633
    588 0 863 1000
    0 19 361 848
    10 740 81 841
    949 196 1000 425
    538 396 588 764
    883 425 988 748
    0 0 189 268
    0 268 189 540
    588 396 883 764
    515 76 949 396
    81 767 873 1000
    189 0 515 583
    363 460 538 767
    363 767 600 923
    762 767 873 923
    288 923 807 1000
    0 0 1000 76
    188 397 363 832
    10 376 188 841
    0 76 462 376
    515 76 949 425
    538 425 988 764
    10 376 86 736
    288 452 330 1000
    1 76 243 265
    349 283 604 460
    86 397 288 736
    0 736 288 1000
    243 8 604 283
    330 520 600 1000
    600 638 1000 1000
    604 0 1000 638

说明/提示

故事背景

高桥君负责管理一个活动大厅。这个大厅可以通过设置隔断分割成若干矩形区域,并将每个区域分别出租给不同的团体。

给定数天的预约情况。每个预约指定了希望的区域面积,如果分配的区域面积小于指定面积,则会产生费用。同时,改变区域分割所需的隔断安装和拆除也会产生与长度成正比的费用。请你尽可能降低总费用来运营活动大厅。

得分

DD 天的总费用为 CC 时,绝对得分为 C+1C+1。绝对得分越小越好。

每个测试用例,得分为 $ \mathrm{round}(10^9\times\frac{\text{所有参赛者中的最小绝对得分}}{\text{你的绝对得分}}) $,相对评价得分为所有测试用例的得分之和。

最终排名将在比赛结束后,对更多输入进行系统测试后决定。无论是暂定测试还是系统测试,若某些测试用例输出不合法或超时,则该测试用例的相对评价得分为 0,并且该用例不会计入“所有参赛者中的最小绝对得分”的计算。系统测试只针对最后一次非 CE 的提交,请务必确保最终提交的解答正确。

测试用例数量

  • 暂定测试:50 个
  • 系统测试:2000 个,比赛结束后将公开 seeds.txt (sha256=16f021f46aad43a81ad05ebf38ed2b6ac813eafacbb6ad98549832218314db8f)

关于相对评价系统

无论是暂定测试还是系统测试,只有最后一次非 CE 的提交会计入排行榜。用于计算每个测试用例“所有参赛者中的最小绝对得分”时,也只考虑排行榜上的最终提交。

排行榜上显示的是相对评价得分,每次新提交都会重新计算。提交列表中显示的分数是所有测试用例的绝对得分之和,不显示相对评价得分。若想了解非最新提交在当前排行榜下的相对评价得分,需要重新提交。若输出不合法或超时,提交列表中的分数为 0,但排行榜会显示所有正确测试用例的相对得分之和。

关于运行时间

运行时间会有一定波动。系统测试时由于同时运行大量程序,运行时间通常比暂定测试长几个百分点。因此,接近时间限制的提交在系统测试中可能会超时。建议在程序中自行计时并提前终止,或预留足够的运行时间。

示例程序

以下为 Python 示例程序。该程序将第 kk 个矩形分配为左上角 (k,0)(k,0),右下角 (k+1,W)(k+1,W)。

# read input
W, D, N = map(int, input().split())
a = []
for d in range(D):
    a.append(list(map(int, input().split())))

# determine rectangles
rect = [[] for _ in range(D)]
for d in range(D):
    for k in range(N):
        rect[d].append((k, 0, k + 1, W))

# output
for d in range(D):
    for k in range(N):
        i0, j0, i1, j1 = rect[d][k]
        print(i0, j0, i1, j1)

输入生成方法

用 $ \mathrm{rand}(L,U) $ 表示生成 LL 到 UU 之间的均匀随机整数。

天数 DD 由 D=rand(5,50)D=\mathrm{rand}(5,50) 生成。每天预约数 NN 由 N=rand(5,50)N=\mathrm{rand}(5,50) 生成。参数 ee 由 e=rand(500,5000)/10000e=\mathrm{rand}(500,5000)/10000 生成,平均空余面积 EE 设为 E=round(W2e2)E=\mathrm{round}(W^2 e^2)。对于每个 d=0,⋯ ,D−1d=0,\cdots,D-1,按如下方法生成 ad,0,⋯ ,ad,N−1a_{d,0},\cdots,a_{d,N-1}:

首先,生成 Td=rand(W2−floor(3E2),W2−floor(E2))T_d=\mathrm{rand}(W^2-\mathrm{floor}(\frac{3E}{2}),W^2-\mathrm{floor}(\frac{E}{2}))。然后,从集合 S={0,Td}S=\{0,T_d\} 开始,直到 SS 的元素数为 N+1N+1,每次生成 $ \mathrm{rand}(1,T_d-1) $ 并加入 SS。将 SS 的元素按升序排列为 s0(=0),s1,⋯ ,sN−1,sN(=Td)s_0(=0),s_1,\cdots,s_{N-1},s_N(=T_d),则 ad,k=sk+1−ska_{d,k}=s_{k+1}-s_k。最后将 ad,0,⋯ ,ad,N−1a_{d,0},\cdots,a_{d,N-1} 升序排列。

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

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

由 ChatGPT 4.1 翻译

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

首页