• 状压dp小结 By cellur925


    会一直慢慢写的...

    一、一些技巧(位运算)

    • 取出整数n在二进制表示下的第k位,检验是否为1---(n>>k)&1
    • 求最后完备状态(假设都是1),有n个待枚举状态,结果是(1<<n)-1
    • 要只取i这一位是1,其他都是0,那么(1<<(i-1))
    • 1<<n=2^n  n<<1=2n
    • 之前的状态(异或的使用)见
    • (虽然这个标题是状压dp)图论中双向边可以编号从2开始(初始tot=1),然后i^1就可以得到反向边的位置。
    • 为了迁就位运算,可以把序号编成0~n-1,这样会方便许多。
    • 将一个用01串(字符数组读入)转成它的十进制表示形式:
        for(int i=1;i<=n;++i) if(a[i]=='1') s|=1<<(n-i);
    • 去掉最后一位:$x>>1$。
    • 在最后加一个0:$x<<1$。

    (金涛的神图)

     二、心路李辰

    当我们发现实在难以转移/复杂度爆炸(如互不侵犯炮兵阵地)的时候,考虑预处理一些东西来帮助我们。

  • 相关阅读:
    Java数组
    Java非访问修饰符
    Java 循环结构
    Java修饰符
    Java语句
    DDK
    HDC中的前景色与背景色
    如何控制一个程序只能有一个进程
    把一个bmp转换成cur显示出来(掩码mask)
    怎么设置IE代理服务器
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9682855.html
Copyright © 2020-2023  润新知