|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 柿子饼同学 于 2024-10-24 18:58 编辑
一些需要想到的点:
杂项
两个数, 看看他们相加/相乘/... 之后的值是不是定值
一个等式可以把左边右边的差值作为状态
离散化/map
1ll * int * int
注意数据类型, 开 ll 等等
带入极端数据看代码有没有问题
绝对值 : 打开分类讨论, 注意 0 的绝对值不变
排序预处理
贪心交换证明
推柿子
交换研究对象
贡献
用发展的眼光看问题, 例如数字要么是 *10 要么是 +1 这样增长的
恰好 = 不大于 + 不小于
差分解决整体问题
01序列
写数据结构的时候注意 n, m 等等东西是谁, 不要搞错了
分块决策, 可以只考虑小数据和大数据, 平衡复杂度
一个状态, 想想他的后继状态和最初的状态, 然后做
前 k 大 : 状态的后继
遇到奇偶性 : 想到分两类讨论, c 包括了奇数个 a 和 偶数个 a
哈希判定循环串 : 1 - mid-1 和 p - mid 的哈希值相同
枚举两个东西的时候尝试把一个塞进数据结构里
哈希
构造一个必要不充分问题, 然后用哈希让不充分的概率非常小
倍增
非常长的东西 / 不变的东西 / 可以差分的东西
排序
用来二分
去除重复的东西, 只算一次, 例如粉刷匠按照颜色排序
便于整体差分 LCA那题
区间问题
前缀和, 差分, 各种数据结构
遇到相等/匹配问题, 想到栈
值对应下标
枚举右端点来找左端点
尺取
删除操作
时间倒流变成加边
伪删除, 用并查集维护后缀最大值
树上问题
直径都过一个点, 从直径上的点出发求最大距离
深度, 距离, lca, 点的个数可以互相转化
深度相关想到 1-x 的链
树剖维护整个链的答案
dsu 预处理
dfn
dfs做差 : 出的答案 - 入的答案, 见天天爱跑步
树形DP
树形背包的是后记住写对架构, 注意转移顺序
子节点先继承父节点的 f , 然后回来的时候更新父节点
两个 dp 数组互相计算
子树和父节点所在树的合并
DP
注意转移顺序
可行性数组, 然后把一维作为值
刷表转化为填表来优化
数位dp 的时候注意 0, 及时除掉多余项
状压dp 技巧 : 按照 1 的个数分 st , 容斥 , mask
dp的优化
有后效性的dp试着用最短路算法
01的线性dp需要设 f(i) 表示 i 强制什么什么, 也就是当成区间染色问题, 枚举这一段多长, 染什么颜色
图论
超级原点
i - j 的最短路的子路径也是最短路
由一个起点的最短路图不存在环(<= 0 的权除外)
一条边 (x, y) 的出现次数 : 以 x 为终点的数量 * 以 y 为起点的路径数量
拓扑序
待更新... |
|