BZOJ 1088 扫雷

此题为四川省选。

其实我们发现只要确定了前两个格子的雷的情况,剩下的皆可递推出来。

那么枚举前两个(一个?)格子的状态,然后判断最后第(n+1)个格子是否符合要求(=0)即可。

比较好想吧。。。。注意把循环的上界换成min(1,a[1])依旧可过。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define maxn 10005
using namespace std;
int n,a[maxn],f[maxn],ans=0;
void work()
{
for (int i=2;i<=n;i++)
f[i+1]=a[i]-f[i]-f[i-1];
if (f[n+1]==0) ans++;
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
for (int i=0;i<=min(1,a[1]);i++)
{
memset(f,0,sizeof(f));
f[1]=i;
f[2]=a[1]-f[1];
work();
}
printf("%d",ans);
return 0;
}

时间: 2025-01-31 04:36:32

BZOJ 1088 扫雷的相关文章

BZOJ 1088 扫雷Mine (递推)

题解:如果确定了第一排前两个数,那么剩下的数是唯一确定的,所以只要分情况讨论即可. #include <cstdio> #include <cstring> int n,a[10010],s[10010]; int ans(int x){ memset(a,0,sizeof a); if(x==1)a[1]=1; if(x==2)a[2]=1; if(x==3)a[1]=a[2]=1; for(int i=2;i<=n-1;i++){ a[i+1]=s[i]-a[i]-a[i

BZOJ 1088 扫雷Mine

       这道题纯粹吓人的,看完题发现总共就两列,最开始想一个个进行枚举,发现费时费力还过不了,后来仔细一看,只要枚举前两个格子的四种情况后面的就全出来了,中间加个判断不符合减一就行了,结果绝对小于等于4.        代码如下: #include<iostream> #include<cstdlib> #include<cstdio> using namespace std; int i_long; int i_nob[10000]; int i_lei[100

[BZOJ 1088][SCOI2005]扫雷Mine

Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,"余"人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8连通的格子里面雷的数目.现在棋盘是n×2的,第一列里面某些格子是雷,而第二列没有雷,如下图: 由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案. Input 第一行为N,第二行有N个数,依次为第二列的格

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

Bzoj 1088: [SCOI2005]扫雷Mine 怒写一发,算不上DP的游戏题 知道了前\(i-1\)项,第\(i\)项会被第二列的第\(i-1\)得知 设\(f[i]\)为第一列的第\(i\)行位置是否有雷,有雷的话,\(f[i] = 1\),无雷\(f[i] = 0\) \(a[i]\)就是题目读入的东西. 那么转移方程就是\(f[i] = a[i - 1] - f[i - 1] - f[i - 2]\) 不满足限制的时候就是\(f[i] < 0\) 或者$ f[i] > 1$ 第一

BZOJ 1088: [SCOI2005]扫雷Mine 枚举

枚举前两位,递推剩下的 1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1832  Solved: 1090 [Submit][Status][Discuss] Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,"余"人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8

【水题】【SCOI 2005】【bzoj 1088】扫雷Mine

1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2180 Solved: 1272 Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,"余"人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8连通的格子里面雷的数目.现在棋盘是n×2的,第一列里面某些格子是雷,而第二列没有

【BZOJ 1088】 [SCOI2005]扫雷Mine

Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8连通的格子里面雷的数目.现在棋盘是n×2的,第一列里面某些格子是雷,而第二列没有雷,如下图: 由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案. Input 第一行为N,第二行有N个数,依次为第二列的格子中的数.

BZOJ 1088 SCOI2005 扫雷

DFS即可过~ #include <cstdio> #include <algorithm> #include <cstring>   int Map[10005],n,ban[10005],tot;   void dfs(int h){     if(h>n){         if(Map[h-1]+Map[h-2]==ban[h-1]) tot++;         return;     }     if(h==1){         dfs(h+1);

(水 递推) bzoj 1088

1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1820  Solved: 1084[Submit][Status][Discuss] Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8连通的格子里面雷的数目.现在棋盘是n×