zoukankan      html  css  js  c++  java
  • 小技巧

    尺取法。

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

  • 相关阅读:
    hdu3613(扩展KMP)
    hdu4333(扩展KMP)
    poj 2185
    指数型母函数
    java高精度hdu4043
    卡特兰数简单应用
    hdu3625(第一类斯特林数)
    卡特兰数和斯特林数(转载)
    hdu4045(递推)
    java 中sendredirect()和forward()方法的区别
  • 原文地址:https://www.cnblogs.com/Smeow/p/10582594.html
Copyright © 2011-2022 走看看