zoukankan      html  css  js  c++  java
  • POJ 3046 DP

    必须优化dp数组,因为每次更新必须用到前一阶段和本阶段的数据,不能简单的把数组改成一维,我开了两个数组滚动使用

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxv=1e5+30;
    int mod=1000000;
    int t,a,s,b;
    int dp1[maxv];
    int dp2[maxv];
    int f[1005];
    int main(){
        freopen("in","r",stdin);
        cin>>t>>a>>s>>b;
        int kk;
        for(int i=1;i<=a;i++){ 
        scanf("%d",&kk);
        f[kk]++;
        }
        memset(dp1,0,sizeof dp1);
        dp1[0]=1;
        int *now=dp2,*pre=dp1;
        for(int i=1;i<=t;i++){ 
            for(int j=0;j<=a;j++){
                now[j]=((now[j-1]+pre[j])%mod-(j-1-f[i]>=0?pre[j-1-f[i]]:0)+4*mod)%mod;
            }
            swap(now,pre);
        }
        int ans=0;
        for(int i=s;i<=b;i++) ans=(pre[i]+ans)%mod;
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    AlphaToCoverage solution
    PhyreEngine3.8 MSAA resolution
    渲染错误
    tomcat
    Jupyter
    Flask
    Highcharts20151130
    CodeMirror
    响应式
    import
  • 原文地址:https://www.cnblogs.com/Cw-trip/p/4464194.html
Copyright © 2011-2022 走看看