请求添加 Hack 数据并撤下被 Hack 的题解
查看原帖
请求添加 Hack 数据并撤下被 Hack 的题解
557756
Brilliance_Z楼主2023/2/8 10:41

当我写这道题的笔记时,我发现我之前证明的时候推式子少了一个取等,AC 的代码也没有处理这个取等的特殊情况,然后就成功 Hack 了我 AC 的代码并顺带 Hack 了题解区的部分题解

Hack 数据

input:

1
3 3 10
10 10 10

possible answer:

3 10
2 10
1 10

one of the wrong outputs:

3 10
3 0 2 10
2 0 1 10

被 Hack 的题解

被 Hack 的题解 1(注意被 Hack 的原因不是因为 Ta 的随机化)

被 Hack 的题解 2

被 Hack 的题解 3(这篇题解是题解区的最后一篇,Ta 的原博客文章好像无权查看)

被Hack的原因

默认集合内原材料按质量从小到大排序 {d1,d2,,dn}\{d_1,d_2,\cdots,d_n\}

mnm≥n 时,一次操作选 dnd_n 单独凑一道菜,把剩余的质量放回集合。一次操作后 mm1m→m-1。重复操作直至 m=n1m=n-1

但是上面的方法需要保证 dn>kd_n>k

反证法:若 dnkd_n≤k,则 d1++dnnkd_1+\cdots+d_n≤nk,当且仅当 d1==dn=kd_1=\cdots=d_n=k 等号成立。故除了 d1==dn=kd_1=\cdots=d_n=k 的特殊情况,其他情况与 d1++dn=mknkd_1+\cdots+d_n=mk≥nk 矛盾。

所以当 d1==dn=kd_1=\cdots=d_n=k 时,上面的方法如果不特判会使得把质量 00 放回集合,或者 mm1,nn1m→m-1,n→n-1,永远无法满足 m=n1m=n-1

2023/2/8 10:41
加载中...