小技巧

尺取法。

\(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})\]

转载于:https://www.cnblogs.com/Smeow/p/10582594.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值