状压dp学习笔记

先放上三道例题:
洛谷P2622 关灯问题II
[SCOI2005]互不侵犯
POJ 2411 Mondriaan's Dream

从上面三道可以看出,状压dp适用于数据范围比较小的,并且有浓厚dp色彩(第一题除外,感觉就是纯粹的状压),比如求方案数。状压的转移一般比较好设计,然后转依旧是暴力转移,一般有优化的可以优化,这样可以快一点。方程一般有一维是一个十进制数代表二进制数,这个二进制数一般存的是状态(这个灯开/关,这个位置有/没有国王,这个位置的砖块是横/竖)
然后可以总结出一些设计方程的套路。先看数据范围,找每个格子是否只有两种状态(思路打开),但后暴力判定是否匹配转移。

状压的优化除了一些普通的dp优化,还有就是提前筛出一部分在一个十进制数里就有约束的数,比如

for(int i=0;i<(1<<n);i++){
        bool flag=false;
        for(int j=0;j<n;j++){
            if(j>0){
                if(((i>>j)&1)&&((i>>(j-1))&1)){
                    flag=true;
                    break;
                }
            }if(j<n-1){
                if(((i>>j)&1)&&((i>>(j+1))&1)){
                    flag=true;
                    break;
                }
            }
        }
        if(flag==false) v.push_back(i);
    }

这里就筛出了一些数,可以快一点qwq

留给自己的任务:愤怒的小鸟

posted @   wuhupai  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示