小技巧

尺取法。

\(meet~in~middle\)

枚举子集:\(for(int~i=s;i;i=(i-1)\&s);\)

无向连通图个数=总数-不联通的图的个数(基准点计数)。

01串也可以黑白染色\(qwq\)

处理1~n的所有数的所有因子,枚举因子\(\times\)倍数是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 \bigcap T = \emptyset \Leftrightarrow S \subseteq \complement_U T \]

求子集比较方便

\[\lceil\frac A B\rceil=\lfloor\frac {A+B-1}{B}\rfloor \]

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

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

的序列的通项满足:

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

前缀和满足:

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

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

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

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

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

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

\[\vdots \]

\[(???)a_k+(???)a_{k+1}=a_k+{k\choose 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\)交界处)。

对于一个图,建立一棵生成树,每条非树边赋一个值,所跨的树上的链都异或上这个权值,然后
“一个边集的权值异或为\(0\Leftrightarrow\)删掉这些边图被分割成两部分”(存在\(hash\)冲突)

点分治处理联通块问题,强制每次都经过分治中心。
。。。。
先对\(a\)\(max\),后对\(b\)\(min\)
$a>b\Leftrightarrow $ 区间赋值为 \(b\)
$a<b\Leftrightarrow $ 分开处理,小于 \(a\) 的改为 \(a\) ,大于 \(b\) 的改为 \(b\)\(a,b\) 之间不变。
反之同理。

\(O(1)\)快速乘:
原理:\(a~mod~p = a - \lfloor\frac a p\rfloor\times 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\)的概率\(\cdots\cdots\)

原理:贡献为\(i\)的被统计了\(i\)次。

T71980 【模板】伯努利概型

对于卷积:

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

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

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

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

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

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

\[c_k=\sum_{i=0}^k a_i\times 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}) \]

posted @ 2019-03-23 09:37  Smeow  阅读(207)  评论(0编辑  收藏  举报