1088: [SCOI2005]扫雷Mine 题解

来源:互联网 发布:射频版图设计软件 编辑:程序博客网 时间:2024/04/25 15:59

(传送门)
题意很简单,不重复了。
一开始把这当成递推了,结果各种细节被虐,最后还华丽丽的WA了,后来手贱点了题解,MD,我真的就是一个菜鸡。
其实这么想,首先第一个格子也就0和1两种状态,然后第二个格子,由于右边一列第一个格子给出的数就是第一个格子和第二个格子的地雷和,所以也能推出来,第三个由右边第二个,又推出来,最后推呀推呀推呀推,推到最后,注意这个序列有可能是不合法的,所以我们需要推到N+1项,然后根据第N+1个格子上,如果是合法的,第N+1个格子上是不会有地雷的。这道题就解完了。
答案就0or1or2……

#include<cstdio>#include<cstring>using namespace std;int n,a[10005],f[10005],ans;int _check(){    for (int i=2;i<=n;i++)      f[i+1]=a[i]-f[i-1]-f[i];    return f[n+1]?0:1;}int main(){    scanf("%d",&n);    for (int i=1;i<=n;i++) scanf("%d",&a[i]);    for (int i=0;i<=a[1];i++)    {        if (i==2) break; memset(f,0,sizeof(f));        f[1]=i; f[2]=a[1]-i; ans+=_check();    }    printf("%d",ans);    return 0;}

Orz 远在遥远的某省会城市的Lynstery神牛
Orz Lynstery Orz Lynstery Orz Lynstery