BZOJ1088 - [SCOI2005]扫雷Mine
2017-12-08 22:06
267 查看
题意简述
在一个2行n(n≤104)列的扫雷棋盘中,仅在第一行存在雷。给出第二行的标数情况,求可能的方案数。
分析
记第一行的雷分布情况为ai,第二行的标数情况为bi,则有ai=bi−1−ai−2−ai−1。又因为bi是钦定的,所以只要确定a1和a2就能确定第一行的情况了。
实现
根据b1确定a1和a2,再判断ai是不是属于{0,1}即可。
代码
#include <cstdio> int const N=1e4+10; int n,x ; int a ; int check() { for(int i=2;i<=n-1;i++) { a[i+1]=x[i]-a[i-1]-a[i]; if(a[i+1]!=0 && a[i+1]!=1) return 0; } if(a[n-1]+a ==x ) return 1; else return 0; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&x[i]); if(x[1]==0) a[1]=0,a[2]=0; else if(x[1]==1) a[1]=1,a[2]=0; else if(x[1]==2) a[1]=1,a[2]=1; int ans=check(); if(x[1]==1) a[1]=0,a[2]=1,ans+=check(); printf("%d\n",ans); return 0; }
注意
bn需要特判一下。
相关文章推荐
- BZOJ 1088: [SCOI2005]扫雷Mine
- 【水题】【SCOI 2005】【bzoj 1088】扫雷Mine
- 【bzoj1088】[SCOI2005]扫雷Mine
- bzoj 1088: [SCOI2005]扫雷Mine
- BZOJ1088 [SCOI2005]扫雷Mine
- BZOJ1088 - [SCOI2005]扫雷Mine
- BZOJ系列1088《[SCOI2005]扫雷Mine》题解
- bzoj1088[SCOI2005]扫雷Mine
- 【bzoj1088】 [SCOI2005]扫雷Mine
- 【BZOJ 1088】【SCOI 2005】扫雷mine
- bzoj1088 [SCOI2005]扫雷Mine
- 【SCOI2005】【BZOJ1088】扫雷Mine
- 【bzoj 1088】 [SCOI2005]扫雷Mine 不能再水了
- [bzoj1088][SCOI2005]扫雷Mine
- 【BZOJ 1088】 [SCOI2005]扫雷Mine
- [SCOI2005] BZOJ 1088 扫雷-状压dp
- [BZOJ1088][SCOI2005]扫雷Mine
- [BZOJ 1088] [SCOI2005] 扫雷Mine
- BZOJ 1088: [SCOI2005]扫雷Mine【思维题,神奇的模拟+枚举】
- BZOJ1088: [SCOI2005]扫雷Mine