zoukankan      html  css  js  c++  java
  • [2020.12.09周三]dp A题

    [2020.12.09周三]dp A题

    题意:问一个序列被分成m段不相交的段后这m段求和,问求和最大值。

    题意:(dp[i][1]表示算上当前这个数,被分成i段的最大和;)

    (上当前这个,被分成i段的最大和。)

    注意点:

    很简单一道题被我做成了怎么过也过不去的题,原因是inf开小了,之前开0x3f3f3f3f.

    我果然不擅长写动态规划的细节。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=5e5+100; 
    const ll inf=1e18;
    ll a[maxn];
    ll dp[maxn][2];
    int main()
    {
        int m,n;
        while(cin>>m>>n)
        {
            for(int i=0;i<=n;i++) dp[i][0]=dp[i][1]=-inf;
            for(int i=1;i<=n;i++) cin>>a[i];
            dp[1][1]=a[1];
            for(int i=2;i<=n;i++){
               for(int j=min(m,i);j>=2;j--){
                   dp[j][0]=max(dp[j][1],dp[j][0]);
                   dp[j][1]=max(dp[j][1]+a[i],max(dp[j-1][0],dp[j-1][1])+a[i]);
               }
               dp[1][0]=max(dp[1][1],dp[1][0]);
               dp[1][1]=max(a[i],a[i]+dp[1][1]);
            }  
            cout<<max(dp[m][0],dp[m][1])<<endl;
        }
    }
    
  • 相关阅读:
    python多进程(一)
    python操作memcached
    python操作redis
    SQLAlchemy总结
    SQLAlchemy-ORM
    python操作mysql二
    python操作mysql
    python正则二
    python正则
    python内置模块(三)
  • 原文地址:https://www.cnblogs.com/zx0710/p/14109663.html
Copyright © 2011-2022 走看看