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

    题目:BZOJ1088、洛谷P2327、Vijos P1193、codevs2452。

    题目大意:经典的扫雷游戏(不要告诉我你连扫雷都没玩过),右边一排没有雷,给出右边一排的信息,求左边一排有多少种满足条件的摆雷方案。

    解题思路:我们发现,只要知道左边一排第一格有没有雷,就可以根据右边一排推出下面所有的雷。推出来以后我们只要判断是否满足右边一排最后一格的条件即可。简单的递推。

    C++ Code:

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[10002],n,ans;
    int f[10002];
    void pd(){
    	for(int i=2;i<=n;++i){
    		int cnt=f[i-1]+f[i-2];
    		if(cnt>a[i-1]||a[i-1]-cnt>1)return;
    		f[i]=a[i-1]-cnt;
    	}
    	if(f[n]+f[n-1]!=a[n])return;
    	ans++;
    }
    int main(){
    	scanf("%d",&n);
    	ans=0;
    	for(int i=1;i<=n;++i)
    	scanf("%d",&a[i]);
    	f[0]=0;
    	for(f[1]=0;f[1]<2;++f[1])//枚举第一格有没有雷 
    	pd();
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    剩余类&完全剩余组
    同余验算法
    一种快速余数求法
    同余的性质II
    同余初步
    求N个数的最小公倍数
    N个数GCD求解法
    快速求解GCD的三个Trick
    质数的几个有趣问题
    等比数列求和公式
  • 原文地址:https://www.cnblogs.com/Mrsrz/p/7380231.html
Copyright © 2011-2022 走看看