首页 > 其他分享 >[题解]CF33C Wonderful Randomized Sum

[题解]CF33C Wonderful Randomized Sum

时间:2024-04-18 21:56:12浏览次数:18  
标签:int 题解 Sum Wonderful lr rl sum

CF33C Wonderful Randomized Sum

我们可以发现,如果两区间不交叉也不会影响到结果,所以我们只需要考虑不交叉的情况即可。

我们所选择的前缀\(1\sim i\)应满足区间和最小,后缀也一样。所以用两个数组\(lr,rl\)分别记录下\(1\sim i\)(前缀)最小和、\(i\sim n\)(后缀)最小和。然后枚举分割点\(i\),把前缀和后缀的和取一个最小值。答案即为\(sum-2*min(lr[i],rl[i+1])\quad(1\leq i \leq n)\)(\(sum\)是所有元素的和)。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100010],lr[100010],rl[100010],sum;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i];
	for(int i=1,cur=0;i<=n;i++) cur+=a[i],lr[i]=min(lr[i-1],cur);
	for(int i=n,cur=0;i>=1;i--) cur+=a[i],rl[i]=min(rl[i+1],cur);
	int minn=LLONG_MAX;
	for(int i=1;i<=n;i++) minn=min(minn,lr[i]+rl[i+1]);
	cout<<sum-2*minn;
	return 0;
}

标签:int,题解,Sum,Wonderful,lr,rl,sum
From: https://www.cnblogs.com/Sinktank/p/18144482

相关文章

  • 问题解析
    查看内存总量[root@localhost~]#free-h----人性化显示内存使用情况totalusedfreesharedbuff/cacheavailableMem:1.8G329M270M9.1M1.2G1.2GSwap:4.0G0B......
  • [ABC240E] Ranges on Tree 题解
    [ABC240E]RangesonTree题解思路解析由题意可知,只要一个点的所有儿子节点都被确定了,那么当前节点也就被确定了。也就是说,只要确定了所有叶子节点,也就能一层层地确定所有节点,而叶子节点没有儿子节点不受此条件的约束,同时我们希望\(\max\limits^N_{i=1}R_i\)最小,所以我们把所......
  • 【面试准备】跨域问题解决方法
    跨域是什么浏览器对于javascript的同源策略的限制,是一种安全策略举例:用户登陆某个网站后,服务器在客户端写了一些cookie,如果cookie被其他网站读取,那么隐私信息就会泄漏,包含用户的登录状态等。跨域情况说明:域名不同域名相同,端口不同二级域名不同跨域问题解决jsonpngi......
  • P7177 [COCI2014-2015#4] MRAVI 题解
    思路。我们知道最初添加的液体越多,那么每个蚂蚁得到的液体也就越多,又因为标签里有深搜,所以可以用DFS+二分解决(感觉说了一通废话),算是比较常规的一种解法了。在此题中我们需要魔改一下建树,需在其中添加判断此边是否为超级管道和处理通过液体的百分比这两段代码。DFS和二分的代......
  • Multiplicity 题解
    \(\texttt{ProblemLink}\)简要题意给定一个序列\(a\),求\(\sum\limits_{i=1}^ncnt_i\)。\(cnt_i\)表示在\(a\)中选择长度为\(i\)的非空子序列\(b\)使得\(\forallj\in[1,i],j|b_j\)的数量。思路计数题,考虑dp。设\(f_{i,j}\)表示前\(i\)个数,选......
  • [题解][洛谷P1174] 打砖块
    题目分析n行m列的砖块,起始有k发子弹。每次可以用一发子弹,打碎某一列当前处于这一列最下面的那块砖,并且得到相应的得分。某些砖块打碎以后会获得一个砖块。求最大得分。题解可以看出是一道动态规划题。关键在于如何设计状态。先考虑砖块打碎不会得到子弹的情况:这个时候可以......
  • [题解] [NOIP 1999] 导弹拦截
    [NOIP1999]导弹拦截题目描述有若干枚导弹,每一枚导弹的高度是\(h_i\),导弹拦截系统每次拦截导弹都不能比上一次拦截的高度更高,导弹拦截没有冷却时间且第一次拦截的高度任意。问题1:一套系统最多能拦截多少导弹?问题2:拦截所有导弹最少需要多少个拦截系统?输入格式一行,若干个......
  • LibreOJ-3038 「JOISC 2019 Day3」穿越时空 Bitaro <线段树> 题解
    审题一条链每条边有通行时间上下界限制通过一条边需要\(1\)单位时间站在当前节点时间减少\(1\)耗费\(1\)单位代价\(q\)次询问要么更改一条边的通信时间上下界要么询问在\(b\)时刻在城市\(a\),\(d\)时刻到达城市\(c\)的最小代价思想做题准备......
  • 前端面试题解析与总结
    在2024年的前端行业,面试是进入理想公司的一道门槛。不同公司的面试流程和考察点各有不同,下面将结合三家知名公司的面试题目进行分析和总结,为广大前端开发者提供一份参考指南。一、某对外电商一面:笔试题:弹窗组件防抖截流代码实现关系型数组转换成树形结构对象数组全排列......
  • at_cf17final_j Tree MST 题解
    题目链接点击打开链接题目解法还是挺有收获的题解法1完全图求\(mst\),首先应该考虑\(boruvka\)算法现在的问题转化成了求\(O(\logn)\)次每个点\(x\)到不在\(x\)的连通块中的点的最短边这个可以换根\(dp\)求子树内的是好求的,只要记录所有连通块的最小值和次小值......