SCOI2005 扫雷

一道很有趣的(水)题

“这道题有四种解法,你知道么”

给你矩阵的第二列的数字,求出第一列雷有多少种可能的摆法。

不懂扫雷规则的自行按win+R然后输入winmine

思考过后我想到了一种拙劣的DP写法 ,

四维 F[i][][][] i代表到了第几个格子,后面三维用 0和1表示 这个格子旁边雷的情况,分别是 左上 左 左下

简单易懂(十分恶心)的代码

#include<bits/stdc++.h>
using namespace std;
int N,a[],f[][][][];
int main()
{
ios::sync_with_stdio(false);
cin>>N;
for(int i=;i<=N;i++)cin>>a[i];
if (a[]==)f[][][][]=;
else if (a[]==)f[][][][]=,f[][][][]=;
else if (a[]==)f[][][][]=;
for(int i=;i<=N-;i++)
{
if (a[i]==)
f[i][][][]=f[i-][][][]+f[i-][][][];
else if (a[i]==)
f[i][][][]=f[i-][][][]+f[i-][][][],
f[i][][][]=f[i-][][][]+f[i-][][][],
f[i][][][]=f[i-][][][]+f[i-][][][];
else if (a[i]==)
f[i][][][]=f[i-][][][]+f[i-][][][],
f[i][][][]=f[i-][][][]+f[i-][][][],
f[i][][][]=f[i-][][][]+f[i-][][][];
else if (a[i]==)
f[i][][][]=f[i-][][][]+f[i-][][][];
}
if (a[N]==) cout<<f[N-][][][]+f[N-][][][];
else if (a[N]==) cout<<f[N-][][][]+f[N-][][][]+f[N-][][][]+f[N-][][][];
else if (a[N]==) cout<<f[N-][][][]+f[N-][][][];
return ;
}

就是枚举出了所有的情况 ,暴力转移。  (手边要有个画图板 边写边画 别漏情况)

美其名曰DP

当时代码写得十分顺,一遍过编译 ,一遍AC

实际上 ,没这么复杂。

现在我们可以思考一下 , 第二列数字都已知 , 如果你知道了第一列的前两个格子是否有雷 ,那么 我们就可以把 所有的 都推出来了

b[i]=a[i-1]-b[i-1]-b[i-2] (b[i]是格子i的雷,a[i]是第二列的数字)

所以只要枚举前两个格子的雷就可以了 。

这题答案只有 0,1,2;

超短代码↓

#include<bits/stdc++.h>
using namespace std;
int N,a[],ans;
void Work(int x,int y)
{
int b[];
b[]=x,b[]=y;
for(int i=;i<=N+;i++)
b[i]=a[i-]-b[i-]-b[i-];
if(b[N+]==)ans++;
}
int main()
{
ios::sync_with_stdio(false);
cin>>N;
for(int i=;i<=N;i++)cin>>a[i];
if (a[]==)Work(,),Work(,);
else if (a[]==)Work(,);
else if (a[]==)Work(,);
cout<<ans<<endl;
return ;
}

最新文章

  1. 【poj3270】 Cow Sorting
  2. python 学习1
  3. 【Solr】solr的增删改查
  4. POJ 3384 Feng Shui(半平面交向内推进求最远点对)
  5. windows win7 win10 多系统启动菜单 多系统引导设置
  6. xamarin.ios 豆瓣电台视频教程
  7. python遍历字典元素
  8. 排查Linux机器是否已经被入侵
  9. BZOJ-3709-[PA2014]Bohater(贪心)
  10. logback的使用和logback.xml详解
  11. Angular2+URL中的 # 引发的思考
  12. gnutls-3.5.18 static building for windows
  13. vue(v-html)和scss的使用问题
  14. 利用yum升级Centos6的gcc版本,使其支持C++11
  15. ASP.Net MVC OA项目笔记&lt;四&gt;
  16. navicat-mysql-linux工具
  17. jzoj3519
  18. doc2vec使用笔记
  19. Spring 4 官方文档学习(十一)Web MVC 框架
  20. Neutorn LBaaS 原理

热门文章

  1. SAS小记
  2. html5plus 从相册选择图片后获取图片的大小
  3. String Comparison(C#)
  4. LCD段码驱动
  5. SAI / PS绘画一个卡通女孩详解
  6. Reactor Cooling ZOJ - 2314 上下界网络流
  7. 关于PY的推导式
  8. (WC2018模拟十二)【FJOI2016集训Day7T3】Xor-Mul棋盘
  9. 浏览器解析,HTTP/HTTPS、TCP/IP、WebSocket协议
  10. git 常用操作命令行