比赛策略与思路
- 暴力不好写,没法对拍 ≠\neq= 稳了
- 签到题要求稳,可以当熟悉环境。但也要注意速度,为后面的题腾出时间。
- 正解调不出来就写暴力,一是确认题意、换下脑筋,二是提供对拍,三是拿到保底分。正解很久调不出来至少说明此题难度和你的能力水平不相上下,写暴力不亏。
- 做题思路是 IDA*,而不是贪心。即,不要轻易放弃,多换几种思路。
- 估价函数是到达终点的期望代价,而不是当前状态的复杂程度。即,如果感觉这解法有希望但也许很麻烦,请继续想想;如果是真的感觉做不了,试试根号分治(雾)然后就可以换思路了。
- 不要觉得这是个竞赛图(缩点后是条链)。即,不要觉得这几种做法是等价的就不去试了,实际上很多时候并不等价,即使等价你也可能看不出来。
- 牢记,正式考试中不会有不可做的题,除了 NOI D2T3 和 ZJOI。
- 牢记,人难我难,考场降智是小概率事件,至少比这题真的很难概率小。
- 务必 Linux 下编译(不要有侥幸心理),测空间(即使这题空间复杂度很小,你有可能把
MAXN
写成了MAXM
),开文件测样例。字符串处理题在 Linux 下测试。
需要检查的易错细节
- 用到 long long 的所有运算,尤其是乘法。 如果 long long 很多建议
#define int long long
,不多也建议开着测下极限数据。(没事不要随便开,常数贼大) - 数组大小。
- 棋盘的长和宽。
- 序列的长度与值域。
- 多测清空。
可能遇到的奇怪的错
- 数组越界可能出现任何奇怪的问题。
multiset
删除值会删除所有相同的值,删一个的正确操作是删除迭代器。另外这东西的count
是 O(logn+答案)O(\log n+答案)O(logn+答案) 的,所以尽量用map
吧(string
类型的S=S+T
是 O(∣S∣+∣T∣)O(|S|+|T|)O(∣S∣+∣T∣) 的,而S+=T
是 O(∣T∣)O(|T|)O(∣T∣)。- 重载运算符忘打了(比如重载了
<
却用了>
) 可能会隐性调用构造函数。