Trick
Trick:
与各位数之和模 同余(CF10C Digital Root)st
表 和 线段树 可以存- 注意函数增减性(CF1632D New Year Concert)
dp
时若下标太大,可以调换下标和存储的数值(CF1974E Money Buys Happiness)- 贪心不成立时,可以用反悔贪心(CF1974G Money Buys Less Happiness Now)
- 乘法一般比加法更优(CF1872G Replace With Product)
- '(' 看成
,')' 看成 (CF1976D Invertible Bracket Sequences) atan2
可以求角度(CF257C View Angle)- 正难则反(容斥原理)(CF803F Coprime Subsequences)
- 抓住数据的特殊性质,如
(CF468C Hack it!) - 可以贪心+
dp
(贪心推性质,用dp
做),经典单调队列优化 (CF797F Mice and Holes) - 可以先取一个特殊点来做,通过特殊点的特殊性质来解题 (CF1559D2 Mocha and Diana (Hard Version))
- 数据很大时,可以考虑能否缩小范围,后面特殊处理 (CF1956E2 Nene vs. Monsters (Hard Version))
- 设
表示消除区间 及 右边恰好 个与位置 相同字符的答案(CF1107E Vasya and Binary String) - 位运算可以在二进制下一位一位考虑(P4551 最长异或路径)
mex
等价于 总和<区间长度 用线段树二分找 (CF817F MEX Queries)- 分块,用
unordered_multiset
维护块内是否存在一个数(CF551E GukiZ and GukiZiana) - 抓住题目的特殊性质,如 CF2038K Grid Walk,发现从一个与
互质的位置 到 的答案为 ,而且 不会很大,暴力dp
即可。 - 出现偶数次的数的异或和->出现过的数的异或和^去重后的数的异或和->类似于 hh 的项链 树状数组维护(CF703D Mishka and Interesting sum)
- 减少不必要的查询->建线段树时用
st
表维护值(CF803G Periodic RMQ Problem) - 求
到 的最小公倍数,可以筛质数的同时找每个质数的 次是否存在来更新答案以及 (P4626 一道水题 II) - 对于非递增序列
,该度数序列可简单图化当且仅当 (Erdős–Gallai 定理)(CF1091E New Year and the Acquaintance Estimation) (P10463 Interval GCD)- 非重组合
,可重组合 。上升 -> 组合后排序 (P5135 painting) - 分类讨论边的类型(最小生成树上边 or not)来计算答案(CF733F Drivers Dissatisfaction)
- 并查集可以跳过很多无效答案,可以用来优化暴力 (CF200A Cinema)
- 可以把石子看成网格图,从左下角出发,每堆石子拿一个看成往上走(AT_agc002_e Candy Piles)
- 可以考虑枚举因子来计算(CF1499D The Number of Pairs)
- 转化题目给定的条件,差分来做(CF1710B Rain)
dp
前可以构造一下,如(CF1930D2 Sum over all Substrings (Hard Version)),通过构造发现,对于 中每个 ,只需要 的贡献,而且不需要考虑前两个,由此得到转移方程- 发现从小到大取最优,就从小往大做,直接把选了的数扔进
set
里,用树状数组维护删掉后的贡献(CF387E George and Cards) - 对于不容易求的量,可以通过其他相关的量来转移(P4550 收集邮票)
- 一段数
等价于 其他数 (P6544 [CEOI2014] Cake) - 可以拆贡献,分为 不变的 和 变化的(与位置有关),分别维护 (CF396C On Changing Tree)
- 考虑环的情况,如 CF2045G X Aura 正环倒过来走成了负环,于是题目转化为树的情况
- 恰好
转化为 的方案数,前后差分,得到 恰好(CF1188C Array Beauty) - 直接高精度维护会超时,考虑延迟更新,只要每次 /2 的时候更改后两位就可以了(P5513 [CEOI2013] Board)
- 树链剖分性质:dfn 连续,所以可以用 set 来维护,查询时二分(ZR 2858 苹果树)
- 线段树上挂
vector
(P4215 踩气球 & P10590 磁力块) - 线段树可以对应一个
长的序列(CF1401F Reverse and Swap) - 总和 = 期望
总方案数(AT_agc030_d Inversion Sum) - 一个合法的括号序列的前缀和总大于等于零且本身的和为零
- 抽象成平面直角坐标系,从
出发,每一个 看成 , 看成 (P1641) - 可以对每一个深度都建一颗主席树(CF893F Subtree Minimum Query)
- 设原本在位置
上的逆序对数为 ,冒泡排序一轮后,位置 上的逆序对数变为 (P6186 [NOI Online #1 提高组] 冒泡排序)。
代码部分:
vector
最好不要直接排序,常数大,可以用索引来排序。- 注意算术优先级(加括号)!!
- 数组越界要特判,比如下标从
开始时i-1
要特判一下。 - 图论时的输入有时从下标
开始读入。 - 二分时
若超出long long
范围,可以用 。 - 不要写
unordered_map
,用map
。 string
类如果写了s=" "+s;
之类,n=s.size()
应写在前面。st
表要调用log
的预处理!!n<<1
不要写成1<<n
- 递归不要忘写函数名
- 数位 dp 初始化最好为
- 尽量不要太压行,不能想当然把一样的东西合并了,想一想有没有先后顺序(会不会又重复变量?)
- 不要运行错代码!!!
- 离散化,有些可能要开两倍甚至三倍
else:
容斥原理
二项式反演
- 形式一:
- 形式二:
- 形式三(至多和恰好的转化):
- 形式四(至少和恰好的转化):
以颤抖之身追赶,怀敬畏之心挑战。--《棋魂》
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析