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

    bzoj1088[SCOI2005]扫雷

    题意:

    有一个n×2的棋盘,第一列里面某些格子是雷,而第二列没有雷。由于第一列的雷可能有多种方案满足第二列的信息的限制,求根据第二列的信息第一列雷有多少种摆放
    方案。

    题解:

    水题,因为每个第一行的格子可以根据前一个第二行的格子里的信息唯一确定是否有雷,所以只要枚举第一个格子有没有雷就行。

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define inc(i,j,k) for(int i=j;i<=k;i++)
     5 using namespace std;
     6 
     7 int a[20000],b[10000];
     8 int main(){
     9     int n; scanf("%d",&n); inc(i,1,n)scanf("%d",&a[i]),b[i]=a[i];
    10     int ans=0; 
    11     b[1]--; b[2]--;
    12     inc(i,2,n){
    13         if(b[i-1]<0||b[i]<0)break;
    14         if(b[i-1]>1)break;else if(b[i-1]==1)b[i-1]--,b[i]--,i!=n?b[i+1]--:i;
    15         if(i==n&&b[i]==0)ans++;
    16     }
    17     inc(i,2,n){
    18         if(a[i-1]<0||a[i]<0)break;
    19         if(a[i-1]>1)break;else if(a[i-1]==1)a[i-1]--,a[i]--,i!=n?a[i+1]--:i;
    20         if(i==n&&a[i]==0)ans++;
    21     }
    22     printf("%d",ans);
    23     return 0;
    24 }

    20160324

  • 相关阅读:
    2月3日
    照片测试
    家属签证计时
    我来了
    090204 阴天
    重要提醒to 小爱
    小毛小毛
    C++Primer学习日程
    资料库字段存储文件记录的方式
    本日有点忙
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/5656834.html
Copyright © 2011-2022 走看看