博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【递推】【DFS】【枚举】Gym - 101246C - Explode 'Em All
阅读量:6908 次
发布时间:2019-06-27

本文共 738 字,大约阅读时间需要 2 分钟。

网格里放了一些石块,一个炸弹能炸开其所在的行和列。问炸光石块至少要几个炸弹。

枚举不炸开的行数,则可以得出还要炸开几列。

为了不让复杂度爆炸,需要两个优化。

先是递推预处理出f(i)表示i的二进制位中1的个数,f(i)=f(i-2^k)+1,k是可以推算出来的。

还要DFS枚举不炸开的行数,防止重复访问。(类似容斥的时候的写法)

#include
#include
using namespace std;int n,m,f[1<<25],g[1<<25],zt[26],ans=2147483647;char a[30][30];void dfs(int S,int cur,int now){ ans=min(ans,n-now+(f[S]-(n-now)<0 ? 0 : f[S]-(n-now))); for(int i=cur+1;i<=n;++i){ dfs(S|zt[i],i,now+1); }}int main(){ freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;++i){ scanf("%s",a[i]+1); for(int j=1;j<=m;++j){ if(a[i][j]=='*'){ zt[i]|=(1<<(j-1)); } } } for(int i=1,j=0;i<(1<

转载于:https://www.cnblogs.com/autsky-jadek/p/7171947.html

你可能感兴趣的文章
源码阅读:Masonry(六)—— MASViewConstraint
查看>>
Red Hat Enterprise Linux(RHEL)中yum的repo文件详解
查看>>
AI考拉技术分享会--Node.js并发模型
查看>>
NEO改进协议提案6(NEP-6)
查看>>
优化体系结构 - 混合运算实现 T+0查询
查看>>
java bean 对象属性复制框架BeanMapping-01-入门案例
查看>>
脑洞大开的翻转代码
查看>>
优化体系结构 - 数据外置减少中间表
查看>>
用ABAP代码读取S/4HANA生产订单工序明细
查看>>
海报推广神器:活码加多级加密跳转防封双重保护
查看>>
rabbitmq的基本使用
查看>>
深入 Nginx 之架构篇
查看>>
93. Restore IP Addresses
查看>>
环境变量python从版本2.x更改为3.x时,yum报错
查看>>
ant Table rowSelection勾选后更新数据无法清除缓存(无法取消勾选)
查看>>
【Linux系统编程】普通用户绑定(bind)特权端口
查看>>
代码编辑器Sublime_Text3的使用
查看>>
Docker Stack 部署web集群
查看>>
thinkphp源码分析(一)—开门篇
查看>>
猫叔产品读记 | 如何更好的玩转补贴、阿里入股B站商业化变现、儿童口腔市场怎么样?(3期)...
查看>>