首页 > 其他分享 >CF855B

CF855B

时间:2024-03-29 13:35:58浏览次数:7  
标签:CF855B int long mxf 1e9 mxb

Marvolo Gaunt's Ring

题面翻译

给了三个数: $p,q,r(-1e9<=p,q,r<=1e9)$

然后给了n个数$a_1,a_2...a_n(-1e9<=a_i<=1e9)$

求找出三个数$a_i,a_j,a_k(1<=i<=j<=k<=n)$使得$p\times a_i+q\times a_j+r\times a_k$最大。

分析

这是一道十分简单的“三元组”问题,套路很简单:

  • 枚举中心点 $j,\ O(1)$ 找到最大的 $i, j$。
    对于这一道题目,需要处理前缀最大值和后缀最大值即可。
#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e5 + 5;

int n, p, q, r, ans = LONG_LONG_MIN;

int a[N], mxf[N], mxb[N];

signed main(){
    
    cin >> n >> p >> q >> r;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    
    mxb[n + 1] = mxf[0] = -1e18 - 1;
    
    for (int i = 1; i <= n; i++)
        mxf[i] = max(mxf[i - 1], a[i] * p);
    
    for (int i = n; i >= 1; i--)
        mxb[i] = max(mxb[i + 1], a[i] * r);
    
    for (int i = 1; i <= n; i++)
        ans = max(ans, mxf[i] + a[i] * q + mxb[i]);
    
    cout << ans;
    
    return 0;
}

Written with StackEdit中文版.

标签:CF855B,int,long,mxf,1e9,mxb
From: https://www.cnblogs.com/genshin-player/p/18103664

相关文章

  • CF855B Marvolo Gaunt's Ring
     给了三个数:p,q,r(−1e9<=p,q,r<=1e9)p,q,r(−1e9<=p,q,r<=1e9)然后给了n个数a1,a2...an(−1e9<=ai<=1e9)a1​,a2​...an​(−1e9<=ai​<=1e9)求找出三个数ai,aj,ak......