zoukankan      html  css  js  c++  java
  • bzoj 1088: [SCOI2005]扫雷Mine

    链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1088

    思路; 很明显当第一列的第一个和第二个格子的值确定时,后面每个格子的值都是可以确定的。当第二列第一个格子为0或2时,我们都可以确定第一列前两个格子,当第二列第一个格子为1时,会有两种可能,一开始想到这里因为前两个格子确定了后面都是可以确定的值就直接判如果a[1]==2||a[1]==0直接输出1,a[1]==1输出2,但是wa了。。因为虽然之后的格子值是确定的,但是确定的方案未必是对的,我们需要判断下当前方案是否成立

    实现代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int M = 1e5 + 10;
    int f[M],a[M],n;
    int solve(){
         for(int i = 2;i < n;i ++){
            if(a[i] < f[i]+f[i-1]) return 0;
            f[i+1] = a[i] - f[i] - f[i-1];
         }
         if(f[n]+f[n-1] != a[n]) return 0;
         return 1;
    }
    
    int main()
    {
        int x,ans;
        cin>>n;
        for(int i = 1;i <= n;i ++)  cin>>a[i];
        if(a[1] == 0){
            f[1] = 0; f[2] = 0; ans = solve();
        }
        else if(a[1] == 1){
            f[1] = 0; f[2] = 1; ans = solve();
            f[1] = 1; f[2] = 0; ans += solve();
        }
        else {
            f[1] = 1; f[2] = 1; ans = solve();
        }
        cout<<ans<<endl;
    }
  • 相关阅读:
    BZOJ1233 干草堆
    POJ1321棋盘问题【搜索】
    1008
    10.2训练赛
    2014 ACM/ICPC Asia Regional Shanghai Online【未完成】
    hdu5045||2014 ACM/ICPC Asia Regional Shanghai Online【数位dp】
    0926
    poj1007【求逆序数】
    hlg1287数字去重和排序II【hash】
    hlgChocolate Auction【并查集】
  • 原文地址:https://www.cnblogs.com/kls123/p/10574652.html
Copyright © 2011-2022 走看看