2019-team321/RAP
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
Generated by YPL
曾经经历的策略失败或成功的代表性情景的还原, 并分析得出相关的经验规律。
=== 情景一: CCPC 2019 厦门 ===
ypl 读了两遍 A, 感觉题意不是很明确。
ypl: 题意应该是这样的, blablabla... 我不是很确定题意, 样例有点复杂我还没有验证, 你要不要再读一遍?
zkx 用了 15s 读了一遍。
zkx: 我觉得题意也是这样的!
两人很久都没想出来, 直到榜上 A 了一片。 这时候 ypl 在想另一道题的细节, zkx 和 yay 在讨论这个题目。
ypl 突然意识到了题意可能存在的问题, 并跟 zkx 和 yay 说了这种可能性, 这时候才发现这道题真正的题意, 并很快地得到了做法。
分析:
(1) 读题的时候, 当明确不是很确定的时候, 要么把样例验证了, 要么把锅甩给队友。 把锅甩给队友的时候不要预先告诉他题意, 以防他先入为主。
(2) 看榜。 如果榜上的一道题被 A 穿了, 或者通过的人数比预想的要多, 那么很可能是审题审错了, 或者这就是一道 SB 题, 有很简单的做法, 我们都想复杂了, 需要我们有更加新而简单的想法。
=== 情景二: CCPC 2019 厦门 ===
ypl 一眼把 J 题秒了。
ypl: 这是一道点分治!!!
zkx 看了一下榜, 发现 J 题在 15 分钟已经 A 了很多人, 而点分治的写法会比较麻烦。
zkx: 这题应该没这么麻烦吧。
ypl 也开始想更简单的做法, zkx 觉得直接用 |path(u, v)| - wu + wv, ypl 想到了证明, 于是这就变成了一个简单的树形 DP。
分析:
(1) 看榜。 如果榜上的一道题被 A 穿了, 或者通过的人数比预想的要多, 那么很可能是审题审错了, 或者这就是一道 SB 题, 有很简单的做法, 我们都想复杂了, 需要我们有更加新而简单的想法。
=== 情景三: 某场训练赛 ===
开局 10 分钟, 大家都在读题。
zkx: 我来写 B。
5 分钟后 zkx 的 B 过了。
zkx: 我来写 C。
yay: 这是什么题?
zkx: 模拟题!
10 分钟后, ypl 的签到题写好了, ypl 看到 zkx 在看代码。
ypl: 现在是怎么样的?
zkx: 样例过不了, 我在调!
15 分钟后, zkx 交了一发。
zkx: WA 了!!!
过了一会 zkx 去打印, 让 ypl 写, 期间和 yay 说了题意, 发现了做法的一个问题, 等 ypl 写完之后改了一会就 A 了。
分析:
(1) 还是尽可能避免这种情况的发生, 节省一些没必要浪费的时间。 一道题至少两个人知道题意和做法, 除非那种真的简单无脑题。
=== 情景四: 某场训练赛 ===
ypl 不知道在做什么, 今天 2 点才睡觉。 训练赛时, 室内感觉没开空调!? ypl 难以呼吸和思考, 困难一点的题目根本想不了。
分析:
(1) 早点睡。
(2) 风扇准备好。
=== 情景五: 某场训练赛 ===
给定 (a1, b1), (a2, b2), ..., (an, bn), 双方轮流选, 得到对应价值, 两个人都想比对面的价值和大, 问输赢。 zkx 觉得排完序做就好了, 但是按什么排序不是很明确。
zkx 觉得按照 a - b 排序。
zkx: 我觉得很有道理啊!!
ypl 找出了反例。
ypl 觉得按照 a + b 排序, 因为拿了 a 个的同时对面相当于少拿了 b 个, delta 就是 a + b。
zkx: a + b 相同的时候怎么办?
ypl: a 和 b 都要尽可能大, 那就按照 max(a, b) 排序!
zkx: 我觉得很有道理啊!!
zkx 写完 WA 了。
ypl: 是不是你代码写错了?
zkx: 我代码肯定没写错!!
ypl: 真的?
zkx: 我肯定!!!
ypl: 我觉得第一维按照 a + b, 第二维按照 a - b 排序!!
zkx: 我觉得很有道理!!
改完继续 WA。
ypl 觉得自己做不出来了, 先去看其他的题目。
zkx: 我觉得按照 (a - b, max(a, b)) 排序很有道理!!!
zkx 改完继续 WA。
yay 也过来帮忙, 他证明了 a + b 的正确性, 还觉得 a + b 相同可以任意顺序。 我们都觉得这没有道理, 但肯定是排序方法的问题, 但是不知道怎么排序的, 于是这道题放了一会。
到最后的时候, zkx 发现了他代码的错误, 按照 (a - b, max(a, b)), (a - b, min(a, b)), (a - b, a), (a - b, b) 排序交了好几次继续 WA, 没 WA 一次 zkx 拍一次桌子, 最后趴在了桌子上。
正要放弃的时候,
ypl: 第一维有没有按照 a + b 试过?
zkx 改成 a + b 又交了一发, 终于 A 掉了。
分析:
(1) zkx 写代码要仔细一点。
(2) 按照 yay 的说法, 不要神仙求过, WA 不过三。 不能“觉得很对”, 要想清楚理由。
(3) 对于猜想, 要衡量写与不写的性价比, 通常代码比较短或者每题做的时候才去写, 写完没过的时候通常先放一下。
=== 情景六: 某场训练赛 ===
ypl 发现某道比较困难的题目是中途相遇, 复杂度看起来也能接受, 写完发现 TLE 了。 ypl 想到了优化方法, 给 yay 再写了一遍就过了。
分析:
(1) 对于一些不太常见的复杂度, 特别是状压、 爆搜这种的, 要认真算好复杂度能不能过, 不要自己“觉得能过”。
=== 情景七: CCPC 2019 厦门 ===
过了六道题, ypl 和 yay 讨论出了 K 题做法, 觉得还是先看一下其他题, K 题不好写。
ypl: K 题放了吧, 不好写!!
yay: 那就放了吧!!!
之后就开始自闭, 并遗忘了可能做出的 K 题。
此外 ypl 选择性遗忘了 B 题, 因为 B 题没有任何提交。
分析: 对于这种榜上题都过了, 要自己开题的情况,
[[BR]](1) 对于每道题目, 至少要知道它的题意。
[[BR]](2) 对于有想法的问题, 不要轻易放弃, 因为能做出一道就很了不起了。 像遇到这种情况应该先看一下有没有其他好做的题, 没有就全力做好 K, 按照 yay 平时的码速应该能在最后 15 分钟前码完。
Generated by YPL
曾经经历的策略失败或成功的代表性情景的还原, 并分析得出相关的经验规律。
情景一: CCPC 2019 厦门
ypl 读了两遍 A, 感觉题意不是很明确。
ypl: 题意应该是这样的, blablabla... 我不是很确定题意, 样例有点复杂我还没有验证, 你要不要再读一遍?
zkx 用了 15s 读了一遍。
zkx: 我觉得题意也是这样的!
两人很久都没想出来, 直到榜上 A 了一片。 这时候 ypl 在想另一道题的细节, zkx 和 yay 在讨论这个题目。
ypl 突然意识到了题意可能存在的问题, 并跟 zkx 和 yay 说了这种可能性, 这时候才发现这道题真正的题意, 并很快地得到了做法。
分析:
(1) 读题的时候, 当明确不是很确定的时候, 要么把样例验证了, 要么把锅甩给队友。 把锅甩给队友的时候不要预先告诉他题意, 以防他先入为主。
(2) 看榜。 如果榜上的一道题被 A 穿了, 或者通过的人数比预想的要多, 那么很可能是审题审错了, 或者这就是一道 SB 题, 有很简单的做法, 我们都想复杂了, 需要我们有更加新而简单的想法。
情景二: CCPC 2019 厦门
ypl 一眼把 J 题秒了。
ypl: 这是一道点分治!!!
zkx 看了一下榜, 发现 J 题在 15 分钟已经 A 了很多人, 而点分治的写法会比较麻烦。
zkx: 这题应该没这么麻烦吧。
ypl 也开始想更简单的做法, zkx 觉得直接用 |path(u, v)| - wu + wv, ypl 想到了证明, 于是这就变成了一个简单的树形 DP。
分析:
(1) 看榜。 如果榜上的一道题被 A 穿了, 或者通过的人数比预想的要多, 那么很可能是审题审错了, 或者这就是一道 SB 题, 有很简单的做法, 我们都想复杂了, 需要我们有更加新而简单的想法。
情景三: 某场训练赛
开局 10 分钟, 大家都在读题。
zkx: 我来写 B。
5 分钟后 zkx 的 B 过了。
zkx: 我来写 C。
yay: 这是什么题?
zkx: 模拟题!
10 分钟后, ypl 的签到题写好了, ypl 看到 zkx 在看代码。
ypl: 现在是怎么样的?
zkx: 样例过不了, 我在调!
15 分钟后, zkx 交了一发。
zkx: WA 了!!!
过了一会 zkx 去打印, 让 ypl 写, 期间和 yay 说了题意, 发现了做法的一个问题, 等 ypl 写完之后改了一会就 A 了。
分析:
(1) 还是尽可能避免这种情况的发生, 节省一些没必要浪费的时间。 一道题至少两个人知道题意和做法, 除非那种真的简单无脑题。
情景四: 某场训练赛
ypl 不知道在做什么, 今天 2 点才睡觉。 训练赛时, 室内感觉没开空调!? ypl 难以呼吸和思考, 困难一点的题目根本想不了。
分析:
(1) 早点睡。
(2) 风扇准备好。
情景五: 某场训练赛
给定 (a1, b1), (a2, b2), ..., (an, bn), 双方轮流选, 得到对应价值, 两个人都想比对面的价值和大, 问输赢。 zkx 觉得排完序做就好了, 但是按什么排序不是很明确。
zkx 觉得按照 a - b 排序。
zkx: 我觉得很有道理啊!!
ypl 找出了反例。
ypl 觉得按照 a + b 排序, 因为拿了 a 个的同时对面相当于少拿了 b 个, delta 就是 a + b。
zkx: a + b 相同的时候怎么办?
ypl: a 和 b 都要尽可能大, 那就按照 max(a, b) 排序!
zkx: 我觉得很有道理啊!!
zkx 写完 WA 了。
ypl: 是不是你代码写错了?
zkx: 我代码肯定没写错!!
ypl: 真的?
zkx: 我肯定!!!
ypl: 我觉得第一维按照 a + b, 第二维按照 a - b 排序!!
zkx: 我觉得很有道理!!
改完继续 WA。
ypl 觉得自己做不出来了, 先去看其他的题目。
zkx: 我觉得按照 (a - b, max(a, b)) 排序很有道理!!!
zkx 改完继续 WA。
yay 也过来帮忙, 他证明了 a + b 的正确性, 还觉得 a + b 相同可以任意顺序。 我们都觉得这没有道理, 但肯定是排序方法的问题, 但是不知道怎么排序的, 于是这道题放了一会。
到最后的时候, zkx 发现了他代码的错误, 按照 (a - b, max(a, b)), (a - b, min(a, b)), (a - b, a), (a - b, b) 排序交了好几次继续 WA, 没 WA 一次 zkx 拍一次桌子, 最后趴在了桌子上。
正要放弃的时候,
ypl: 第一维有没有按照 a + b 试过?
zkx 改成 a + b 又交了一发, 终于 A 掉了。
分析:
(1) zkx 写代码要仔细一点。
(2) 按照 yay 的说法, 不要神仙求过, WA 不过三。 不能“觉得很对”, 要想清楚理由。
(3) 对于猜想, 要衡量写与不写的性价比, 通常代码比较短或者每题做的时候才去写, 写完没过的时候通常先放一下。
情景六: 某场训练赛
ypl 发现某道比较困难的题目是中途相遇, 复杂度看起来也能接受, 写完发现 TLE 了。 ypl 想到了优化方法, 给 yay 再写了一遍就过了。
分析:
(1) 对于一些不太常见的复杂度, 特别是状压、 爆搜这种的, 要认真算好复杂度能不能过, 不要自己“觉得能过”。
情景七: CCPC 2019 厦门
过了六道题, ypl 和 yay 讨论出了 K 题做法, 觉得还是先看一下其他题, K 题不好写。
ypl: K 题放了吧, 不好写!!
yay: 那就放了吧!!!
之后就开始自闭, 并遗忘了可能做出的 K 题。
此外 ypl 选择性遗忘了 B 题, 因为 B 题没有任何提交。
分析: 对于这种榜上题都过了, 要自己开题的情况,
(1) 对于每道题目, 至少要知道它的题意。
(2) 对于有想法的问题, 不要轻易放弃, 因为能做出一道就很了不起了。 像遇到这种情况应该先看一下有没有其他好做的题, 没有就全力做好 K, 按照 yay 平时的码速应该能在最后 15 分钟前码完。