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 分钟前码完。