当前位置: 首页 > 工具软件 > Gaunt > 使用案例 >

Marvolo Gaunt's Ring 【CodeForces 855B】

丁念
2023-12-01

Marvolo Gaunt’s Ring
求p * i + q * j + r * k(i<=j<=k)的最大值
虽然题中给的时间比较长但还是不可以用直接暴力用三次for循环,一定可以用一遍循环过的。下面这种方法一定要牢记,感觉经常用到。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int Max=1e5+10;
int a[Max];
int main()
{
    ll n,p,q,r;
    scanf("%lld%lld%lld%lld",&n,&p,&q,&r);
    for(ll i=0;i<n;i++)
        scanf("%d",&a[i]);
    ll maxs1=a[0]*p;
    ll maxs2=maxs1+a[0]*q;
    ll maxs3=maxs2+a[0]*r;
    for(ll i=1;i<n;i++)
    {
        maxs1=max(maxs1,a[i]*p);
        maxs2=max(maxs2,maxs1+a[i]*q);
        maxs3=max(maxs3,maxs2+a[i]*r);
    }
    printf("%lld\n",maxs3);
    return 0;
}
 类似资料:

相关阅读

相关文章

相关问答