zoukankan      html  css  js  c++  java
  • [SCOI2005]扫雷

    题目描述

    输入输出格式

    输入格式:

    第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)

    输出格式:

    一个数,即第一列中雷的摆放方案数。

    输入输出样例

    输入样例#1:
    2
    1  1
    输出样例#1:
    2

    这题神套路..答案只有三种0,1,2
    因为只要第一个的状态确定了之后,后面的要么无解,要么只有一种解.
    因为每个点要么有雷要么无雷.
    所以就可以先枚举第一个点是否有雷,然后DP判断是否有解.
    每个点的雷数f[i]=a[i-1]-f[i-1]-f[i-2].
    若算出来不是01就无解了.

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<string>
     6 #include<algorithm>
     7 #include<map>
     8 #include<complex>
     9 #include<queue>
    10 #include<stack>
    11 #include<cmath>
    12 #include<set>
    13 #include<vector>
    14 #define maxn 10010
    15 using namespace std;
    16 int f[maxn],a[maxn],n;
    17 inline bool check(){
    18   for(int i=2;i<=n;i++){
    19     f[i]=a[i-1]-f[i-1]-f[i-2];
    20     if(f[i]!=0 && f[i]!=1) return 0;
    21   }
    22   if(f[n]+f[n-1]!=a[n]) return 0;
    23   return 1;
    24 }
    25 int main(){
    26   int ans=0;
    27   scanf("%d",&n);
    28   for(int i=1;i<=n;i++)
    29     scanf("%d",&a[i]);
    30   f[1]=0;
    31   if(check())ans++;
    32   memset(f,0,sizeof(f));
    33   f[1]=1;
    34   if(check())ans++;
    35   printf("%d",ans);
    36   return 0;
    37 }
  • 相关阅读:
    nginx之location匹配优先级和安全问题
    nginx--->高并发优化
    高并发处理方案
    检查Linux服务器性能
    浅谈Nginx负载均衡和F5的区别
    大数据不仅仅是海量数据
    自己实现C++的string类
    hihoCoder题目之Magic Box
    vim入门之配色方案(colorscheme)设置
    新开通博客,很是高兴
  • 原文地址:https://www.cnblogs.com/pantakill/p/7502684.html
Copyright © 2011-2022 走看看