Mines

参考了队友的代码,大神为啥总是不爱把代码贴出来呢...

#include<cstdio>
#include<string.h>#define Mines mp[c][i]-f(x&bit[i])-f(x&bit[i+1])-f(y&bit[i])-f(y&bit[i+1])
const int N=11,M=1<<11;
int n,m,ans;
int bit[N],num[M];
int mp[N][N],les[N][N];//les是剩下雷个数inline int f(int k){//是否是雷if(k!=0) return 1;return 0;
}
inline int min(int a,int b){return a>b?b:a;
}
void init(){bit[0]=1;for(int i=1;i<N;i++)//2的i次方bit[i]=bit[i-1]<<1;for(int i=1;i<M;i++)//状态i个1个数num[i]=num[i-(i&-i)]+1;
}void dfs(int x,int y,int c,int tot){//上行状态x,此行状态y,当前第c行,雷tot个//printf("%d %d %d %d--\n",x,y,c,tot);if(c==n-1){for(int i=0;i<m;i++){les[c][i]=Mines;//减去上行和此行的雷if(les[c][i]) return;}//printf("%d--\n",tot);ans=min(ans,tot);return;}for(int i=0;i<m;i++){//更新剩余雷的个数les[c][i]=Mines;if(les[c][i]<0)return;}for(int first=0;first<=1;first++){//模拟下行状态nextint pre=first,next=first*bit[0];for(int i=0;i<m;i++){pre=les[c][i]-pre;if(pre!=0&&pre!=1)goto out;next|=pre*bit[i+1];}dfs(y,next,c+1,tot+num[next]);out: ;}
}int main(){init();while(~scanf("%d %d",&n,&m)){ans=1e9;for(int i=0;i<n;i++)for(int j=0;j<m;j++)scanf("%d",&mp[i][j]);for(int i=0;i<bit[m+1];i++)//模拟第0行状态idfs(0,i,0,num[i]);printf("%d\n",ans);}return 0;
}

ZOJ 3755 Mines相关推荐

  1. ZOJ 3755 - Mines (状压DP)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5178 题意: 大家都玩过扫雷吧. 给你n*m的扫雷数字.数字都在偶数列上. 也 ...

  2. 免费idc公益接口_数据科学促进社会公益免费开放数据的最佳来源

    免费idc公益接口 内容(Contents) Introduction 介绍 What is Open Data? 什么是开放数据? Open vs. Free vs. Online Data 开放与 ...

  3. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  4. zoj 1204 Additive equations

    ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...

  5. 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)

    http://poj.org/problem?id=1411  POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...

  6. jzoj6001. 【PKUWC2019模拟2019.1.15】Mines (tarjan)

    题面 题解 我们把每个地雷向它能炸到的地雷连边,不难发现同一个强联通分量里的点只要一个炸全炸 那么我们缩点,首先所有入度为\(0\)的强联通分量中必须得选一个地雷炸掉,而入度不为\(0\)的强联通分量 ...

  7. 模拟 ZOJ 3878 Convert QWERTY to Dvorak

    题目传送门 1 /* 2 模拟:手敲map一一映射,累! 3 除了忘记读入字符串不能用gets用getline外还是很顺利的AC了:) 4 */ 5 #include <cstdio> 6 ...

  8. 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence

    题目传送门 1 /* 2 题意:加上适当的括号,改变计算顺序使得总的计算次数最少 3 矩阵连乘积问题,DP解决:状态转移方程: 4 dp[i][j] = min (dp[i][k] + dp[k+1] ...

  9. ZOJ 3597 Hit the Target! (线段树扫描线 -- 矩形所能覆盖的最多的点数)

    ZOJ 3597 题意是说有n把枪,有m个靶子,每把枪只有一发子弹(也就是说一把枪最多只能打一个靶子), 告诉你第 i 把枪可以打到第j个靶, 现在等概率的出现一个连续的P把枪,在知道这P把枪之后,你 ...

最新文章

  1. WebSocket 协议
  2. C++和Python,JSON文件的读取和保存
  3. boost::fusion::find_if用法的测试程序
  4. 1700 Crossing River
  5. videowriter最小的编码格式_cv2.VideoWriter() 指定写入视频帧编码格式
  6. 人最重要的能力是什么?
  7. 现共收到 5 个分组,其目的地址分别为: (1) 128.96.40.10 (2) 128.96.41.12 (3) 128.96.41.151 (4) 192.4.123.17 (5) 192.4.
  8. 把对方陷入困境中(博弈论的诡计)
  9. spark mlib坐标矩阵(Coordinate Matrix)
  10. Hadoop伪分布式集群环境搭建
  11. TimedRotatingFileHandler函数用法
  12. 改变PCM音量的JAVA代码
  13. 【气动学】基于matlab内弹道【含Matlab源码 057期】
  14. 关于SQLyog的破解注册码
  15. svm图像分割matlab,python实现
  16. urule决策引擎实现增量打包部署
  17. python生成词云图_python生成词云图
  18. 海致大数据京信_海致网聚提出公安大数据背景下的个人计算新理念
  19. 创意示范:苹果如何使用无线充电技术
  20. linux绘制进程树,Linux基础命令---显示树形进程pstree

热门文章

  1. JVM 垃圾回收简介
  2. Spring boot 获取本机的IP地址mac地址以及电脑名称!
  3. Word技巧之:将PPT框图以可编辑形式插入Word文档
  4. 基于情感词典的python情感分析!它居然比我还懂我女友!
  5. 为什么Rust语言正在兴起
  6. Go语言实现Onvif客户端:9、预置点删改查及跳转
  7. 2021年中国电解液行业现状及竞争格局分析,龙头天赐材料市占持续提升,行业格局稳定「图」
  8. 电子产品工艺设计基础
  9. js随机选学员。从以下学员名单中随机选出4个学员。
  10. Kali linux破解Wi-Fi