Manthan, Codefest 17 B. Marvolo Gaunt's Ring(前后缀/dp)

来源:互联网 发布:sql 日期格式 编辑:程序博客网 时间:2024/06/05 11:45

题目:http://codeforces.com/contest/855/problem/B
题意:给一个数组,让求p·ai + q·aj + r·a 的最大值(1 ≤ i ≤ j ≤ k ≤ n)
思路:
维护最大前后缀
dp参考here
代码:

#include<bits/stdc++.h>using namespace std;const int N = 100005;int a[N];long long L[N],R[N];int main(){    ios_base::sync_with_stdio(0);    cin.tie(0);    int n;    long long p,q,r;    cin >> n >> p >> q >> r;    for(int i = 1;i <= n;i++)        cin >> a[i];    L[1] = a[1]*p;R[n] = a[n]*r;    for(int i = 2;i <= n;i++)        L[i] = max(L[i-1],a[i]*p);    for(int i = n-1;i >= 1;i--)        R[i] = max(R[i+1],a[i]*r);    long long maxn = -(1ll<<63);    for(int i = 1;i <= n;i++)        maxn = max(maxn , L[i]+a[i]*q+R[i]);    cout << maxn << "\n";    return 0;}
阅读全文
0 0
原创粉丝点击