博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1088 [SCOI2005]扫雷Mine
阅读量:4971 次
发布时间:2019-06-12

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

【题解】

  设给出的信息为$a[i]$,每个格子的雷数为$f[i]$

  我们可以发现$f[i]=a[i-1]-f[i-1]-f[i-2]$

  也就是说只要确定了前两个格子的情况,全部的情况都可以计算了。

  那么我们枚举前两个格子的情况,检查是否合法即可。

  

#include
#include
#define N 200010#define rg registerusing namespace std;int n,m,a[N],f[N],ans; inline int read(){ int k=0,f=1; char c=getchar(); while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar(); return k*f;}inline int check(){ for(rg int i=3;i<=n;i++){ f[i]=a[i-1]-f[i-2]-f[i-1]; if(f[i]<0) return 0; } if(f[n-1]+f[n]!=a[n]) return 0; return 1;}int main(){ n=read(); for(int i=1;i<=n;i++) a[i]=read(); if(a[1]==0){ f[1]=f[2]=0; ans+=check(); } if(a[1]==1){ f[1]=0; f[2]=1; ans+=check(); f[1]=1; f[2]=0; ans+=check(); } if(a[1]==2){ f[1]=f[2]=1; ans+=check(); } return printf("%d\n",ans),0;}

  

转载于:https://www.cnblogs.com/DriverLao/p/8484569.html

你可能感兴趣的文章
结对编程项目-四则运算整体总结
查看>>
Android studio怎么修改文件名
查看>>
sass学习笔记-安装
查看>>
多缓存并存
查看>>
Flask (二) cookie 与 session 模型
查看>>
修改添加网址的教程文件名
查看>>
hdu 1045:Fire Net(DFS经典题)
查看>>
[BZOJ 1017][JSOI2008]魔兽地图DotR(树形Dp)
查看>>
裁剪图片
查看>>
数据结构实习 problem L 由二叉树的中序层序重建二叉树
查看>>
VS中展开和折叠代码
查看>>
如何确定VS编译器版本
查看>>
设置PL/SQL 快捷键
查看>>
个人阅读作业7
查看>>
转载:深入浅出Zookeeper
查看>>
GMA Round 1 新程序
查看>>
node anyproxy ssi简易支持
查看>>
编译预处理指令:文件包含指令、宏定义指令、条件编译指令
查看>>
PHP函数 ------ ctype_alnum
查看>>
网站安全
查看>>