zoukankan      html  css  js  c++  java
  • 20201006国庆day4

    T1:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=25010;
    const int K=30;
    const int MOD=1e9+7;
    int f[N][K][K][2],g[N][K][K][2],n,k;
    int R[N][K],L[N][K],tmp[K][2],pos[N],h[N];
    void update(int &x,int y) {
    	x+=y;
    	if(x>=MOD)x-=MOD;
    }
    void work(int f[N][K][K][2],int L[N][K]) {
    	L[0][1]=0;
    	for(int i=1; i<=n; i++) {
    		int cnt=0,j=1;
    		for(; j<=k+1&&j<=i&&L[i-1][j]>=h[i]; L[i][++cnt]=L[i-1][j++]);
    		if(cnt<=k+1)L[i][++cnt]=h[i],pos[i]=cnt;
    		for(; j<=k+1&&j<=i&&cnt<=k+1; L[i][++cnt]=L[i-1][j++]);
    	}
    	f[0][1][0][0]=1;
    	for(int i=0; i<n; i++)
    		for(int x=1; x<=k+1; x++)
    			if(x<=i+1)
    				for(int j=0; j<=k; j++)
    					for(int tag=0; tag<2; tag++) {
    						if(L[i][x]<h[i+1]) {
    							update(f[i+1][pos[i+1]][j][tag],f[i][x][j][tag]);
    							if(j<k)update(f[i+1][x+1][j+1][tag^(L[i][x]&1)],f[i][x][j][tag]);
    						}
    						else {
    							update(f[i+1][x][j][tag^((L[i][x]-h[i+1])&1)],f[i][x][j][tag]);
    							if(j<k)update(f[i+1][x][j+1][tag^(L[i][x]&1)],f[i][x][j][tag]);
    						}
    					}
    }
    int main() {
    	scanf("%d%d",&n,&k);
    	for(int i=1; i<=n; i++)scanf("%d",&h[i]);
    	work(f,L);
    	reverse(h+1,h+n+1);//反转字符串
    	work(g,R);
    	int ans=0;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=k+1;j++)
    			for(int tag=1;tag<=2;tag++)
    				tmp[j-1][tag-1]=0;
    		for(int x=1;x<=k+1;x++)
    			if(x<=n-i+1&&L[n-i][x]<h[i])
    				for(int j=1;j<=k+1;j++)
    					for(int tag=1;tag<=2;tag++)
    						update(tmp[j-1][tag-1],f[n-i][x][j-1][tag-1]);
    		for(int x=1;x<=k+1;x++)
    			if(x<=i&&R[i-1][x]<=h[i])
    				for(int j=1;j<=k+1;j++)
    					for(int tag=1;tag<=2;tag++)
    						update(ans,1ll*g[i-1][x][j-1][tag-1]*tmp[k-(j-1)][tag-1]%MOD);
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    some requirement checks failed
    FTP下载文件时拒绝登陆申请怎么办?
    Linux查看与设定别名
    如何编写shell脚本
    Linux shell是什么
    Linux命令大全之查看登陆用户信息
    Linux命令大全之挂载命令
    论第二次作业之输入输出格式怎么合格(才疏学浅说的不对轻点喷我)
    文件词数统计
    软件工程作业--第一周
  • 原文地址:https://www.cnblogs.com/zdxx/p/13773660.html
Copyright © 2011-2022 走看看