[SCOI2005]扫雷Mine

来源:互联网 发布:空间数据库 吴信才 编辑:程序博客网 时间:2024/05/20 12:52

……水题一道……

确定了第一格和第二格

第一行的所有的雷就确定了

所以枚举一下第一格第二格看合不合法就行了

//Lib#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<ctime>#include<iostream>#include<algorithm>#include<vector>#include<string>#include<queue>#include<set>#include<map>using namespace std;//Macro#definerep(i,a,b)for(int i=a,tt=b;i<=tt;++i)#definedrep(i,a,b)for(int i=a,tt=b;i>=tt;--i)#defineerep(i,e,x)for(int i=x;i;i=e[i].next)#defineirep(i,x)for(__typedef(x.begin()) i=x.begin();i!=x.end();i++)#defineread()(strtol(ipos,&ipos,10))#definesqr(x)((x)*(x))#definepbpush_back#definePSsystem("pause");typedeflong longll;typedefpair<int,int>pii;const int oo=~0U>>1;const double inf=1e100;const double eps=1e-6;string name="", in=".in", out=".out";//Varint ans,n;int f[10008],s[10008];int Check(){rep(i,2,n-1){f[i+1]=s[i]-f[i]-f[i-1];if(f[i+1]<0)return 0;}if(s[n]-f[n-1]-f[n]!=0)return 0;return 1;}void Work(){scanf("%d",&n);rep(i,1,n)scanf("%d",s+i);if(s[1]==0)ans+=Check();else if(s[1]==1){f[1]=1;ans+=Check();memset(f,0,sizeof f);f[2]=1;ans+=Check();}else{f[1]=f[2]=1;ans+=Check();}cout<<ans<<endl;}int main(){//freopen((name+in).c_str(),"r",stdin);//freopen((name+out).c_str(),"w",stdout);//Init();Work();return 0;}


原创粉丝点击