题目描述

题目来源

思路梳理

最简单的方法莫过于枚举i,j,k,但肯定会超时。那么如何不枚举i,j,k呢,我们提前算出来。i,k在两边,当确定一个j时,a[j]*q的值是确定了,我们需要的是满足i<=j的最大值a[i]*p,需要的是满足k>=j的最大值a[k]*p。所以能不能先求出两边的最大值,到时候只用枚举一个j就好了呢?当然可以,用lleft去维护左边即left[i]表示的是前i个数中a[i]*p的最大值,rright去维护右边即rright[k]表示的是后k个数中a[k]*r的最大值,递推求left、right时间复杂度为O(n)。然后枚举j求x的情况,比较取最大即可。

AC代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
typedef long long ll;
using namespace std;
ll a[100010];
ll lleft[100010];//left[i]表示从0到i,a[x]*p的最大值
ll rright[100010];//right[i]表示从n-1到i,a[x]*r的最大值
int main()
{ll n, p, q, r;scanf_s("%lld %lld %lld %lld", &n, &p, &q, &r);for (int i = 0; i < n; i++)scanf_s("%lld", &a[i]);lleft[0] = a[0]*p;//初始化rright[n - 1] = a[n - 1] * r;for (int i = 1; i < n; i++)//递推求求lleftlleft[i] = max(lleft[i - 1] , p * a[i]);for (int i = n - 2; i >= 0; i--)//递推求rrightrright[i] = max(rright[i + 1], r * a[i]);//对于任意位置i来说xi=lleft[i]+right[i]+q*a[i]ll ans = -1e9;for (int i = 0; i < n; i++){ll x = lleft[i] + rright[i] + a[i] * q;if (ans == -1e9)ans = x;//最小值可能很小很小比-1e9还小所以要判定不然会waelse ans = max(ans, x);}cout << ans << endl;return 0;
}

Marvolo Gaunt‘s Ring相关推荐

  1. B. Marvolo Gaunt’s Ring (递推)

    B. Marvolo Gaunt's Ring 题目链接 大致题意: 给你三个数 p,q,r,然后给你给你一个有序的序列,让你在序列中跳出三个数i,j,k(i <=j<=k)使得 p*a[ ...

  2. Marvolo Gaunt's Ring 【CodeForces 855B】

    Marvolo Gaunt's Ring 求p * i + q * j + r * k(i<=j<=k)的最大值 虽然题中给的时间比较长但还是不可以用直接暴力用三次for循环,一定可以用一 ...

  3. Marvolo Gaunt's Ring(类似于dp的做法)

    题目:(题目传送门) Professor Dumbledore is helping Harry destroy the Horcruxes. He went to Gaunt Shack as he ...

  4. Marvolo Gaunt's Ring ---CodeForces - 855B(思维题)

    题目链接:http://codeforces.com/problemset/problem/855/B Marvolo Gaunt's Ring Professor Dumbledore is hel ...

  5. Codeforces 855B - Marvolo Gaunt's Ring

    855B - Marvolo Gaunt's Ring 思路:①枚举a[j],a[i]和a[k]分别用前缀最小值最大值和后缀最小值和后缀最大值确定. ②dp,dp[i][j]表示到第j为止,前i+1个 ...

  6. Marvolo Gaunt's Ring CodeForces - 855B+线段树+维护区间最大值和最小值

    题目链接: Marvolo Gaunt's Ring CodeForces - 855B 题目大意: 给定一段序列:a1,a2,a3,--an, 给定三个数:p,q,r(注意数据范围,代码里ans=- ...

  7. codeforces 855-B. Marvolo Gaunt's Ring

    http://codeforces.com/problemset/problem/855/B 这个题一开始读错了没想到要按顺序之后看到这个就像枚举但是数据太大...emmm然后就有点蒙. 后来看了题解 ...

  8. CodeForces - 855B - Marvolo Gaunt's Ring(线段树 or DP)

    题目:CodeForces - 855B 题解: 1.用dp做的: dp[0][i]是前i个p*a[i]的最大值, dp[1][i]是在dp[0][i]的基础上加上q*a[i]的最大值,这样可以保证j ...

  9. 【ST】【CF855B】 Marvolo Gaunt's Ring

    传送门 Description 给定三个数 \(p~,~q~,~r~\),以及一个数组 \(a\), 找出三个数 \(i~,~j~,~k\) ,其中 \(i~\leq~j~\leq~k\) 最大化 \ ...

  10. codeforces 855-B. Marvolo Gaunt's Ring(背包问题)

    http://codeforces.com/problemset/problem/855/B 解题思路: 可以把p,q,r看成三个物品,当做背包问题处理. #include<iostream&g ...

最新文章

  1. Lync2013与Exchange2013集成先决条件(十九)
  2. rust油桶用什么打_选什么样的柜子才好用?别再选定制柜了,还是老手艺人打的柜子好...
  3. filestream 生成xml 文件时被如何让禁止转义_从Edgecam到PCDMIS,如何将工艺工程师的思想加入质量检测?...
  4. 女生中专学计算机,女生读中专哪个专业好
  5. 微软云计算介绍与实践(实践之一)
  6. Robot Framework 自动化框架大纲
  7. C++之异常捕获和处理
  8. 如何将FLV视频转成MP3格式?
  9. 声音均衡器怎么调好听_酷狗均衡器怎么调好听 - 卡饭网
  10. (励志)(转载) 在华为的十年
  11. 求幂级数展开的部分和 / 求分数序列前N项和 / 特殊a串数列求和
  12. Hadoop单词统计实验
  13. 百度api一键分享功能
  14. 神舟八号安全着陆回家有感
  15. forge 服务器 优化,[FO]难以置信的优化 (Fabulously Optimized)
  16. QLabel设置背景颜色或字体失效显示“无效样式表”解决办法
  17. ffmpeg 编码延迟问题
  18. vue路由匹配实现包容性_简约设计,最大利润,包容性问题
  19. WPF编程--OpenCV人脸识别
  20. 【离散数学】离散数学系列文章汇总目录(持续更新中)

热门文章

  1. OI 刷题记录——每周更新
  2. 工业相机标定(张正友标定法)
  3. 2020-09-24
  4. 机器学习(一):简介
  5. Zhong__交换机各种情况下端口快速启动方法
  6. python现在排第几_Tiobe月度排行趋势中,Python获得了有史以来的最高评级
  7. 网络协议--SSL/TLS
  8. The Mana World 有感
  9. Linux Glibc幽灵漏洞紧急修补方案
  10. golang中的rune类型