有用的 trick 集合

有些时候这些神秘的 trick 可能会帮助你在考场上快速想出一些东西,所以需要记录一下。

数学类

Lucas 定理在 \(\text{mod}\ 2\) 意义下的结论

\(\binom{n}{m}\equiv1\pmod 2\) 当且仅当 \(n \operatorname{and} m=m\),其中 \(\operatorname{and}\) 表示按位与运算。换句话说就是 \(m\) 的二进制位必须是 \(n\) 的二进制位的子集。

应用:P14654 夤生月

面对计数容易算重

考虑枚举基准点将整个东西分成两部分分析,然后乘法原理。

实际上这种问题并没有什么固定的思维,只是发现可以用。

数据结构类

正则括号序列的转化

可以考虑一个正则括号序列转变成一棵树,然后在树上搞事情。

具体转化就是用一个栈维护左括号,每遇到一个左括号就把它加入当前节点的儿子里,否则弹栈。

Code
top = 0;
stk[++ top] = 1;
for (char ch : s) {
	if (ch == '(') {
		int u = stk[top];
		++ tot;
		g[0][u].eb (tot);
		g[0][tot].eb (u);
		stk[++ top] = tot;
	}
	if (ch == ')') -- top;
}

应用:CF2210D A Simple RBS Problem

求区间前缀最大值个数

线段树维护单调栈。文章

模板:P4198 楼房重建

区间的神秘操作

如果遇到区间要维护一些非常反人类的操作,请认准分块。(前提是数据允许)

比如:P4108 [HEOI2015] 公约数数列

图论类

无向图上搞猎奇事情

考虑无向图是一棵生成树上面添了许多条边组成的图,然后就从树+环考虑。

应用:[ARC115D] Odd Degree

不知道什么类

排列的区间 mex

对于一个排列 \(\{a_n\}\),其区间 \([l,r]\)\(\text{mex}\) 等于 \([1,l)\)\((r,n]\) 内元素的的最小值。文字语言就是排列的区间 \(\text{mex}\) 等于补集 \(\min\)

应用:P15652 [省选联考 2026] 排列游戏 / perm

求一个数 \(a=\min\{S\}\)\(a=\max\{S\}\) 的计数和求其他的

考虑枚举 \(a\) 以去掉 \(\min\)\(\max\)。相当于是将计算未知变成计算已知,显然这样更好处理。

应用:ABC439D Kadomatsu Subsequence

图上删边等极难维护之类

考虑时光倒流(正难则反),让删边变成加边这样好操作的东西。

应用:一大堆,但我目前还没做到题目。

不会做题

睡一觉吧。

posted @ 2026-04-03 15:24  XXh_Laoxu  阅读(35)  评论(0)    收藏  举报

转载请注明出处!


#页面摧毁游戏#
使用【上下左右】控制飞行器的运动
使用【空格】发射导弹
点击开始摧毁