• cf 1155 d 最大区间和(变形 区间*x)


    题意:一个数组(+-),一个 x (-100,100) ,我们可以对一个区间的数*x,求改变之后的最大区间和

    思路:普通的最大区间和 d[i] =max(0,d[i-1]+a[i]),但这里由于一个区间可以*x

    那么我们将这个可以*x的区间单独来看.

    d[i][0]表示普通状态

    d[i][1]表示可以*x状态,因为i-1可以*x,那么i也在这个区间

    d[i][2表示最佳,之后选出ans

    #include<bits/stdc++.h>
    using namespace std;
    
    #define ll long long
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define all(v) v.begin(),v.end()
    #define mem(a) memset(a,0,sizeof(a))
    
    const int N = 3e5+4;
    const ll mod =1e9+7;
    const int INF = 1e9+4;
    const double eps = 1e-7;
    
    ll d[N][3];
    
    ll a[N];
    
    int main(){
        ll x;int n;
        cin>>n>>x;
        for(int i=1;i<=n;++i)cin>>a[i];
        ll ans =0;
        for(int i=1;i<=n;++i){
            d[i][0] = max(0ll,d[i-1][0]+a[i]);
            d[i][1] = max( 0ll, max(d[i-1][0],d[i-1][1])+a[i]*x  );
            d[i][2] = max( 0ll, max(d[i-1][0],  max(d[i-1][1],d[i-1][2]) )+ a[i]);
            ans =max(ans, max(d[i][0],max(d[i][1],d[i][2])));
        }
        cout<<ans<<endl;
    
        return 0;
    }
  • 相关阅读:
    cenos安装memcache
    微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单
    mysql设计-优化
    mysql设计-基本操作
    CI框架部署后访问出现404
    ueditor的bug
    git操作
    github基本操作
    基于SSH协议clone GitHub远端仓库到本地-git
    Thinkphp5.0 路由
  • 原文地址:https://www.cnblogs.com/wjhstudy/p/10756760.html
Copyright © 2020-2023  润新知