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 ;
}

bzoj 1088 [SCOI2005] 扫雷的更多相关文章

  1. Bzoj 1088: [SCOI2005]扫雷Mine (DP)

    Bzoj 1088: [SCOI2005]扫雷Mine 怒写一发,算不上DP的游戏题 知道了前\(i-1\)项,第\(i\)项会被第二列的第\(i-1\)得知 设\(f[i]\)为第一列的第\(i\) ...

  2. 【递推】BZOJ 1088: [SCOI2005]扫雷Mine

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2275  Solved: 1328[Submit][St ...

  3. bzoj 1088: [SCOI2005]扫雷Mine

    题目链接 1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2525  Solved: 1495[Submi ...

  4. BZOJ 1088: [SCOI2005]扫雷Mine【思维题,神奇的模拟+枚举】

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3791  Solved: 2234[Submit][St ...

  5. 【BZOJ】1088: [SCOI2005]扫雷Mine

    1088: [SCOI2005]扫雷Mine Description 相 信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的 ...

  6. 1088: [SCOI2005]扫雷Mine

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1635  Solved: 979[Submit][Sta ...

  7. 【BZOJ】1088: [SCOI2005]扫雷Mine(递推)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1088 脑残去想递推去了... 对于每一个第二列的格子,考虑多种情况,然后转移.....QAQ 空间可 ...

  8. 1088. [SCOI2005]扫雷Mine【网格DP】

    Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了 ,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子 ...

  9. BZOJ 1088 扫雷Mine

    今天做了几道BZOJ的题,发现统观题目时还是很多很多都不会的,不过还是有几道时可以作的,以后要慢慢加强,争取多做题 BZOJ 1088 扫雷 其实本人平常不大玩扫雷的,就算玩也不是很好,不过看n*2的 ...

随机推荐

  1. 16.boost图深度优先遍历DFS

    #include <iostream> #include <boost/config.hpp> //图(矩阵实现) #include <boost/graph/adjac ...

  2. JS异步操作之promise发送短信验证码.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta cont ...

  3. js正则学习小计

    //元字符 {} () ^ $ . ? + //预定义字符 \d \D \w \W \s \S //量词 {n,m} {n} {n,} + ? * //贪婪和惰性 //反向引用 //分组 //候选 / ...

  4. There is no 'root'@'%' registered解决

      把别人机器上的MYSQL中的一个数据库导出来,生成了一个.sql的文件   在我的机器上导入这个.sql文件之后,在数据库连接时出现了如下错误:   “There is no 'root'@'%' ...

  5. TP5防sql注入、防xss攻击

    框架默认没有设置任何过滤规则 可以配置文件中设置全局的过滤规则 config.php 配置选项 default_filter 添加以下代码即可 // 默认全局过滤方法 用逗号分隔多个 'default ...

  6. 【BZOJ 1452】 [JSOI2009]Count

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 维护一百个二维树状数组. 二维区间求和. [代码] #include <bits/stdc++.h> #define L ...

  7. Qt之QTemporaryFile

    简述 QTemporaryFile类是操作临时文件的I/O设备. QTemporaryFile用于安全地创建一个独一无二的临时文件.临时文件通过调用open()来创建,并且名称是唯一的(即:保证不覆盖 ...

  8. exadata(硬件更换文档部分)

    Maintaining Flash Disks Replacing a Flash Disk Due to Flash Disk Failure Each Exadata Storage Server ...

  9. Android 主界面长按创建快捷方式

    Android中创建快捷方式主要有两种方式.一是在代码中直接加入生成桌面快捷方式的代码:二是通过小部件加入; 这篇文章主要讲另外一种方法! 1.通过在AndroidManifest文件里为Activi ...

  10. 4、java变量、函数、基本类型的值传递、分支、循环、流程控制

    一.全局变量(global).局部变量(local).动态变量(dynamic).静态变量(static) 在类中的变量为全局变量,在方法函数中为局部变量,局部变量必须有人为赋的初值,全局变量的初值是 ...