状压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
留给自己的任务:愤怒的小鸟
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?