CodeForces - 855B ring 前缀和
邓布利多教授正在帮助哈利摧毁魂器。当他怀疑一个魂器出现在那里时,他去了冈特沙克。他看到Marvolo Gaunt的戒指,并将其确定为魂器。虽然他摧毁了它,但仍然受到诅咒的影响。斯内普教授正在帮助邓布利多解除诅咒。为此,他想给Dumbledore提供他制作的药水x滴。
x的值被计算为给定p,q,r和阵列a1,a2,......的p·ai + q·aj + r·ak的最大值,使得1≤i≤j≤k≤n。帮助Snape找到x的值。请注意x的值可能是负数。
Input
第一行输入包含4个整数n,p,q,r( - 1e9≤p,q,r≤1e9, 1≤n≤1e5)。
下一行输入包含n个空格分隔的整数a1,a2,... an( - 1e9≤ai≤1e9)。
Output
输出p≤ai+ q·aj + r·ak的最大值,只要1≤i≤j≤k≤n即可得到。
Examples
5 1 2 3
1 2 3 4 5
30
5 1 2 -3
-1 -2 -3 -4 -5
12
Note
In the first sample case, we can take i = j = k = 5, thus making the answer as 1·5 + 2·5 + 3·5 = 30.
In second sample case, selecting i = j = 1 and k = 5 gives the answer 12.
题解,,前缀和,,用来保存偶从开始到当前状态的最大值,
后缀和,用来保存从当前位置到结尾处的最大值。
应题目要求,i<=j<=k,所以前缀数组保存前i项p*a[i]最大值..后缀保存后从第n项到第i项r*a[i]的最大值
然后对中间项进行枚举,,求出最大值
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=1E5+;
const ll INF=-+;
ll arr[N];
ll before[N];
ll after[N];
int main(){
int n;
cin>>n;
ll p,q,r;
cin>>p>>q>>r;
for(int i=;i<=n;i++){
scanf("%lld",&arr[i]);
}
for(int i=;i<=n+;i++){//数组的初始化,因为用到了最大值,所以要初始化为最小
before[i]=after[i]=INF;
} for(int i=;i<=n;i++){
before[i]=max(before[i-],p*arr[i]);//保存前i项的最大值
} for(int i=n;i>=;i--){
after[i]=max(after[i+],r*arr[i]);//保存从第i项到第n项的最大值
} ll ans=INF;
for(int i=;i<=n;i++){
ans=max(ans,before[i]+q*arr[i]+after[i]);
}
printf("%lld\n",ans); return ;
}
.
CodeForces - 855B ring 前缀和的更多相关文章
- Codeforces 855B - Marvolo Gaunt's Ring
		
855B - Marvolo Gaunt's Ring 思路:①枚举a[j],a[i]和a[k]分别用前缀最小值最大值和后缀最小值和后缀最大值确定. ②dp,dp[i][j]表示到第j为止,前i+1个 ...
 - Codeforces 855B:Marvolo Gaunt's Ring(枚举,前后缀)
		
B. Marvolo Gaunt's Ring Professor Dumbledore is helping Harry destroy the Horcruxes. He went to Gaun ...
 - Average Sleep Time CodeForces - 808B (前缀和)
		
It's been almost a week since Polycarp couldn't get rid of insomnia. And as you may already know, on ...
 - CodeForces - 776C(前缀和+思维)
		
链接:CodeForces - 776C 题意:给出数组 a[n] ,问有多少个区间和等于 k^x(x >= 0). 题解:求前缀和,标记每个和的个数.对每一个数都遍历到1e5,记录到答案. # ...
 - CodeForces - 948C(前缀和 + 二分)
		
链接:CodeForces - 948C 题意:N天,每天生产一堆雪体积 V[i] ,每天每堆雪融化 T[i],问每天融化了多少雪. 题解:对 T 求前缀和,求每一堆雪能熬过多少天,再记录一下多余的就 ...
 - codeforces 1189C Candies! /  前缀和
		
http://codeforces.com/problemset/problem/1189/C 求一下前缀和,给定区间的数字和除以10就是答案 AC代码: #include<iostream&g ...
 - B. Marvolo Gaunt's Ring  前缀后缀
		
B. Marvolo Gaunt's Ring 这种一般只有三个的都可以处理前缀和后缀,再枚举中间这个值. 这个和之前写过的C. Four Segments 前缀后缀 处理方式很像. #include ...
 - XOR and Favorite Number CodeForces - 617E(前缀异或+莫队)
		
题意原文地址:https://blog.csdn.net/chenzhenyu123456/article/details/50574169 题意:有n个数和m次查询,每次查询区间[l, r]问满足a ...
 - CodeForces 24A  Ring road(dfs)
		
A. Ring road time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
 
随机推荐
- 2020年PHP 面试问题(三)
			
2020年PHP 面试问题(一) 2020年PHP 面试问题(二) 一.数据库三范式 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解: 第二范式:2NF是对记录的惟一性约束,要求 ...
 - Hbase 整合 Hadoop 的数据迁移
			
上篇文章说了 Hbase 的基础架构,都是比较理论的知识,最近我也一直在搞 Hbase 的数据迁移, 今天就来一篇实战型的,把最近一段时间的 Hbase 整合 Hadoop 的基础知识在梳理一遍,毕竟 ...
 - unix中数据缓冲区高速缓冲的设计
			
目录 1. 概述 2. 缓冲区的设计 2.1 缓冲区头部 2.2 缓冲区的结构 2.3 缓冲区的检索算法 2.3. 申请一个缓冲区算法 getblk 2.3.2 释放一个缓冲区算法 brelse 2. ...
 - js内置对象常用方法
			
JS内置对象: ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储.转化和表达 ● Array对象:提供一个数组的模型.存储大量有 ...
 - Django-CBV&FBV
			
django中请求处理方式有2种:FBV 和 CBV 一.FBV FBV(function base views) 就是在视图里使用函数处理请求. urls.py from django.conf.u ...
 - 2783: 【基础】小 X 玩游戏(game)
			
2783: [基础]小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听 ...
 - C - Monkey and Banana
			
文章目录 题意如下 思路如下 题解如下: A group of researchers are designing an experiment to test the IQ of a monkey. ...
 - PTA数据结构与算法题目集(中文)  7-23
			
PTA数据结构与算法题目集(中文) 7-23 7-23 还原二叉树 (25 分) 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度. 输入格式: 输入首先给出正整数N(≤50) ...
 - SSM集合定时任务
			
1.首先要在spring-config.xml里面配置一下: xmlns:task="http://www.springframework.org/schema/task" htt ...
 - Vulnhub DC-5靶机渗透
			
信息搜集 老样子,先找到靶机IP和扫描靶机 nmap -sP 192.168.146.0/24 #找靶机ip nmap -sS -Pn -A 192.168.146.141 #扫描端口 这次开的是80 ...