1 条题解

  • 0
    @ 2023-9-28 15:32:54

    image

    #include<bits/stdc++.h>
    #define P 1000000007
    #define ll long long
    using namespace std;
    const int N=105;
    int n,m,k,s,t,H[N],mi;
    ll f[N][1005],ans;
    void calc(int k){
    	memset(f,0,sizeof(f));
    	f[1][k]++;
    	for (int i=1;i<n;++i){
    		int sum=0;
    		for (int j=k;j<=H[i];++j){
    			sum=(sum+f[i][j])%P;
    			if (k<=H[i+1]-(j-k)){
    				(f[i+1][k]+=sum)%=P;
    				(f[i+1][H[i+1]-(j-k)+1]-=sum)%=P;
    			}
    		}
    	}
    	ans=(ans+f[n][k])%P;
    }
    int main(){
        cin>>n;mi=0x3f3f3f3f;
        for (int i=1;i<=n;++i) cin>>H[i],mi=min(mi,H[i]);
        if (n&1) for (int i=0;i<=mi;++i) 
    				calc(i);
        else calc(0);
        cout<<(ans+P)%P;
    }
    
    • 1

    信息

    ID
    511
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    16
    已通过
    12
    上传者