【2015ZUFE新生赛网络同步赛H】【水题 DP】会长晨刷记 步长1~4 不踩水坑从1到m

来源:互联网 发布:java框架的作用 编辑:程序博客网 时间:2024/04/28 20:21
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<math.h>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}const int N=0,M=0,Z=20152016,ms63=1061109567;int casenum,casei;int n,m,x;bool e[1010];int f[1010];int main(){while(~scanf("%d%d",&m,&n)){MS(e,1);for(int i=1;i<=n;++i)scanf("%d",&x),e[x]=0;MS(f,0);f[0]=1;for(int i=1;i<=m;++i)if(e[i]){f[i]+=f[i-1];if(i>=2)f[i]+=f[i-2];if(i>=3)f[i]+=f[i-3];if(i>=4)f[i]+=f[i-4];f[i]%=Z;}printf("%d\n",f[m]);}return 0;}/*【题意】0是起点,n是终点,从1到n,有些点不能走,步长可以是[1~4],求方案数【类型】水题 DP*/

0 0
原创粉丝点击