尺取法。
(meet~in~middle)
枚举子集:(for(int~i=s;i;i=(i-1)&s);)
无向连通图个数=总数-不联通的图的个数(基准点计数)。
01串也可以黑白染色(qwq)
处理1~n的所有数的所有因子,枚举因子( imes)倍数是O(n logn)的。
(V-E+F=1+C)
枚举(k)子集的方法:
for(int S=(1<<k)-1,ls1,ls2;S<(1<<n);S=(((S&~ls2)/ls1)>>1)|ls2){
···
ls1=S&-S;
ls2=S+ls1;
}
求子集比较方便
查分表第0条对角线(第一列)等于
的序列的通项满足:
前缀和满足:
对于(n^k) 求前缀和通项公式:
解方程组可得系数。
构造一个每个点度数都确定的没有子环没有重边的无向图:找当前度数最大的优先连度数大的。正确性:贪心,无解的限制是所剩的点<度数最大的点的度数。
(reverse~sort)一段(01)序列,要求(reverse)元素的总和尽量小:每次间隔一组(01)进行交换(一段0或1看做一个),这样每次都吧两个相同的数字合并成一个,减半,所以复杂度(nlogn)
(for~example:)
(xor)具有可逆性,(a)进行一系列(xor)得到(b),(b)以相反的顺序进行(xor)也可以得到(a),在让(a)得到(b)的过程中,可以(a)和(b)一起动。CF472F
线性基判断相等:将两个线性基消主元消成2的次幂,再判断一一相等。
值为(0/1)的(dp)每阶段按(0/1)段(dp)((0/1)交界处)。
对于一个图,建立一棵生成树,每条非树边赋一个值,所跨的树上的链都异或上这个权值,然后
“一个边集的权值异或为(0Leftrightarrow)删掉这些边图被分割成两部分”(存在(hash)冲突)
点分治处理联通块问题,强制每次都经过分治中心。
。。。。
先对(a)取(max),后对(b)取(min):
$a>bLeftrightarrow $ 区间赋值为 (b)。
$a<bLeftrightarrow $ 分开处理,小于 (a) 的改为 (a) ,大于 (b) 的改为 (b) , (a,b) 之间不变。
反之同理。
(O(1))快速乘:
原理:(a~mod~p = a - lfloorfrac a p
floor imes p)只与差有关。
ans = ((x * y - (LL) ((LDB) x * y / m) * m) % m + m) % m;
解释:第一个(a)直接(mod~2^{63}-1),第二个用(LDB)暂存,除以(m)后在(LL)范围内再转成(LL)再乘(m~mod~2^{63}-1)两数相减即为答案。
求期望时,当每种概率的贡献是从一开始的连续的整数时,答案是贡献大于(1)的概率(+)贡献大于(2)的概率(cdotscdots)。
原理:贡献为(i)的被统计了(i)次。
对于卷积:
(1.)若(n>k):
把(c,b)右移,
由于(a_{i>n} = 0),
(2.)若(n<k):
由于(a_{i>n}=0)