社区讨论
hack 题解并请求加强数据
P8365[LNOI2022] 吃参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo34w49p
- 此快照首次捕获于
- 2023/10/24 00:50 2 年前
- 此快照最后确认于
- 2023/10/24 00:50 2 年前
rt。
以下三篇题解有问题:
https://www.luogu.com.cn/blog/Kaiser-Wilheim/solution-p8365
https://www.luogu.com.cn/blog/JSYZCHTHOLLY/solution-p8365
https://www.luogu.com.cn/blog/heruimiao123456/solution-p8365
hack 数据将会放在二楼,防止篇幅过长。
这里简要说明一下 hack 数据的大致结构及 hack 原理:
CPPinput:
1003
[1001 个 1] 2 2
[1000 个 1000000] 6 2 1
output:
0
wrong output:
4
未被取模的答案:
4000000028
原理:
以上三篇题解在代码实现中,均对 的 相加后取模,而这里不应该取模,因为题目中这样一句话:
注意:你需要最大化体重并将该最大值对 取模,而非最大化体重对 取模的结果。
但是这些题解的代码在错误地取模后仍能 AC。我猜是因为,在数据比较小的时候,取模根本没有影响;而数据比较大的时候,即使取模后,数据也会很大(大概 数量级的数仍能贪心出正确结果)。所以使用随机数很难生成 hack 数据,必须手动构造。(也就是数据水)
我这里直接构造一组数据,使得将 的 和初始值的相加之和为 ,取模后为 ,从而使下一步的贪心做出错误选择(先 然后再 ),而不是先 再 。
这篇题解 甚至还强调了要取模,大概根本没有考虑到这种情况吧。
所以,建议管理员撤下相关题解并加强数据,可以把 hack 数据放在一个不计分的 subtask 里以警示后人。
回复
共 4 条回复,欢迎继续交流。
正在加载回复...