脑弹寄录

部分分看全,认真想每一档(春测 T4 忘了贪 $k=2$)

强制在线要记 lastans 和异或 lastans(省选模拟赛)

状压下标从 $0$ 开始,大于 $30$ 位开 long long(省选模拟赛)

看清每个变量什么意思(省选模拟赛)

好好读题,模拟样例后再写题(省选 D1T3,D2T2 连读错两题)

统计转贡献不仅可以计数(求满足某条件的数之和),而且可以求最值(求满足某条件的数的最值)(PKUSC D1T1 场寄)

线段树 lazy tag 下传完要清空,整体修改的时候要改,多测所有节点的 lazy tag 都要清空

无返回值函数必须是 void 型的,这个在 O2 下可以 $100\to 0$(模拟赛)

开数组之前想好要用多大,一定要记得 +50,写完必须检查一遍每个数组的大小(模拟赛)

背包记录方案可以滚动数组。(模拟赛)

数位 DP 尽量避免 memset,如求 popcount=k 的数的个数,令状态为 $f_{i,j}$ 表示填到 $i$ 位,后面还要填 $j$ 个 $1$ 的方案数即可避免在不同 $k$ 之间 memset。(模拟赛)

$\log$,根号之类的尽量现算,不要用一个常数。(模拟赛)

平衡树维护集合,不能直接把初值 merge 起来,正确做法是先排序再依次 merge。(模拟赛)

最大 / 最小值的初值要根据被统计元素的取值范围设定,不要设大 / 设小。(模拟赛)

时刻记得取模,尤其是 f[i] = (......) % M 的形式。(模拟赛)

还有 ... * ... % M * ... % M * ... % M 的形式。(模拟赛)

只保证互质,不保证质数,不能用费马小定理求逆元。

注意边界,比如是否出现负数下标。(模拟赛)

DFS 记得回溯。(模拟赛)

考虑如下代码:

struct node
{
    int x, y, lazy;
};
node operator+(node a, node b)
{
    node q;
    q.x = a.x + b.x;
    q.y = a.y + b.y;
    return q; //q.lazy 未初始化!
}

一定要仔细检查样例输出是否正确,比如是否少输出了操作步数。(模拟赛)

__lg(0) 会寄。(模拟赛)


开始打省选模拟赛之后好像就没更过了,现在更一下

不熟(只知道原理,几乎没写过)的东西不要到考场上嗯造,造不出来很亏。(模拟赛)

自信即巅峰,数组往大开,万一跑过了呢(当然还是手造一组数据验证一下更稳)。(模拟赛)

注意细节,对于贪心 / 构造题,时间充裕时尽量手动模拟一下程序的行为与预期是否相符。(模拟赛)

写一行代码之前先想想自己要写什么,避免因为 ** 错误耗费大量调试时间。(AT)

在不犯 ** 错误的前提下尽量提高码速。(模拟赛)

不要花巨量时间写一个复杂度危险的算法(比如 $n\le 2000$ 写平衡树 $O(n^2\log n)$,或者 $n\le 10^5$ 写 $O(n\log^3 n)$),最后很有可能只得暴力分。

老毛病,部分分看全,认真想每一档(第一条,模拟赛又犯了一遍)

时间充裕的情况下,对于期望能过的部分分,造几组极限数据,看看是不是真的能过。(模拟赛)

posted @ 2023-05-07 07:21  5k_sync_closer  阅读(6)  评论(0编辑  收藏  举报  来源