小技巧

尺取法。

(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;
}

[S igcap T = emptyset Leftrightarrow S subseteq complement_U T ]

求子集比较方便

[lceilfrac A B ceil=lfloorfrac {A+B-1}{B} floor ]

查分表第0条对角线(第一列)等于

[c_0,c_1,c_2,cdots,c_p,0,0,0,cdots(c_i!=0) ]

的序列的通项满足:

[h_n=c_0{nchoose 0}+c_1{nchoose1}+c_2{n choose 2}+cdots+c_p{n choose p} ]

前缀和满足:

[sum_{k=0}^n h_k=sum_{i=0}^pc_isum_{k=10}^n{kchoose i}=sum_{i=0}^pc_i{k+1choose i+1} ]

对于(n^k) 求前缀和通项公式:

[a_0+a_1+a_2+a_3+cdots+a_{k+1}=a_0+{kchoose0} ]

[a_1+2a_2+3a_3+4a_4+cdots+(k+1)a_{k+1}=a_1+{kchoose1} ]

[a_2+3a_3+6a_4+10a_5+cdots+(???)a_{k+1}=a_2+{kchoose2} ]

[a_3+4a_4+10a_5+20a_6+cdots+(???)a_{k+1}=a_3+{kchoose3} ]

[vdots ]

[(???)a_k+(???)a_{k+1}=a_k+{kchoose k} ]

解方程组可得系数。

构造一个每个点度数都确定的没有子环没有重边的无向图:找当前度数最大的优先连度数大的。正确性:贪心,无解的限制是所剩的点<度数最大的点的度数。

(reverse~sort)一段(01)序列,要求(reverse)元素的总和尽量小:每次间隔一组(01)进行交换(一段0或1看做一个),这样每次都吧两个相同的数字合并成一个,减半,所以复杂度(nlogn)
(for~example:)

[10101010 ]

[01100110 ]

[00011110 ]

[00001111 ]

(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)次。

T71980 【模板】伯努利概型

对于卷积:

[c_k=sum_{i=0}^n a_i imes b_{k-i} ]

(1.)(n>k)
(c,b)右移,

[c_k=d_{n+k}=sum_{i=0}^n a_i imes b_{k-i+n} ]

由于(a_{i>n} = 0)

[c_k=d_{n+k}=sum_{i=0}^{n+k} a_i imes b_{k+n-i} ]

(2.)(n<k)
由于(a_{i>n}=0)

[c_k=sum_{i=0}^k a_i imes b_{k-i} ]

[a ^ k - b ^ k = (a - b) (a^{k-1} + a^{k-2}b + a^{k-3}b^2 + cdots + ab^{k-2} + b^{k - 1}) ]

原文地址:https://www.cnblogs.com/Smeow/p/10582594.html