首页 > 其他分享 >Atcoder ARC100D Equal Cut

Atcoder ARC100D Equal Cut

时间:2023-06-09 21:02:43浏览次数:45  
标签:Atcoder Cut min int 极差 枚举 ans ARC100D 断点

发现是 \(3\) 个断点且数据范围的 \(n\le 2\times 10^5\),根据 2022CSP-S A 留下的心理阴影不难想到可以枚举中间的那个点的同时移动左右两个端点。
考虑如何移动,已知现在在枚举中间的断点 \(i\),则现在被分为了两部分 \(1\sim i\) 和 \(i\sim n\),因为要使极差最小,那就先可以让每一部分的极差最小。
因为这样子每个部分分出来的两个段至少比较均匀,不会出现一个特别大一个特别小的情况导致答案更大。

所以可以枚举中间断点 \(i\),分出的两端每段都用双指针求出段中极差最小的那一个断点,此时四段极差即为当中间断点为 \(i\) 时的最优解,求出每一个 \(i\) 的最优解取 \(\min\) 即可。
对于区间和还是老套路前缀和一下就行。

时间复杂度 \(O(n)\)。

// lhzawa(https://www.cnblogs.com/lhzawa/)
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
long long a[N];
int main() {
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%lld", &a[i]);
		a[i] += a[i - 1];
	}
	long long ans = 0x3f3f3f3f3f3f;
	for (int i = 2, l = 1, r = 3; i <= n - 1; i++) {
		for (; l + 1 <= i && abs(a[i] - a[l] - a[l]) > abs(a[i] - a[l + 1] - a[l + 1]); l++);
		for (; r + 1 <= n && abs(a[n] - a[r] - a[r] + a[i]) > abs(a[n] - a[r + 1] - a[r + 1] + a[i]); r++);
		ans = min(ans, max({a[n] - a[r], a[r] - a[i], a[i] - a[l], a[l]}) - min({a[n] - a[r], a[r] - a[i], a[i] - a[l], a[l]}));
	}
	printf("%lld\n", ans);
	return 0;
}

标签:Atcoder,Cut,min,int,极差,枚举,ans,ARC100D,断点
From: https://www.cnblogs.com/lhzawa/p/17470220.html

相关文章

  • Leetcode Hot 100 & 128. Longest Consecutive Sequence
    参考资料:考点:哈希&[题干]Input:nums=[100,4,200,1,3,2]Output:4Explanation:Thelongestconsecutiveelementssequenceis[1,2,3,4].Thereforeitslengthis4.做的时候冥思苦想了半天,因为这个题目要求是O(n)的解法,后来看到题解的时候还一度怀......
  • Atcoder ABC221G Jumping sequence
    发现这个\((x,y)\)对应的是曼哈顿距离不太好求,那直接逆时针旋转\(45\)度(其实应该还要伸长\(\sqrt{2}\)倍,但是可以当做\(d_i\)也伸长\(\sqrt{2}\)倍不用去管)转化成切比雪夫距离\((x-y,x+y)\)。同时对应的\(4\)个方向在旋转后对应的方向也得到了改变:\(U(-d,d),......
  • AtCoder Beginner Contest 240 D
    D-StrangeBallstag:栈模拟发现自己隔了快半年再做此题看错相同数字的球消失的条件,不是\(k\geq2\)而是\(k=a_i\)电子竞技不需要视力题意:当球\(a_i(1\leqi\leqN)\)有\(a_i\)个一起出现时,这\(a_i\)个球就会消失,问每次放一个球进去,放进去后还剩多少个球?用个......
  • 【转载】configure: error: C compiler cannot create executables 错误解析
    1原文地址configure:error:Ccompilercannotcreateexecutables错误解析-to_be_better_wen-https://blog.csdn.net/to_be_better_wen/article/details/1306507742前言在编译开源软件的时候,有时会遇到"configure:error:Ccompilercannotcreateexecutables"的错......
  • AtCoder Beginner Contest 150 E Change a Little Bit
    洛谷传送门AtCoder传送门令\(S_i\getsS_i\oplusT_i\),那么代价中\(D\)变成\(S_i=1\)的\(i\)数量。转化为对所有\(f(S)\)求和,最后答案乘上\(2^n\)。考虑贪心地求\(f(S)\)。肯定是先选择小的\(C_i\),把\(S_i\)变成\(0\)。正确性显然。下面把\(C_i\)从大到......
  • Mac视频剪辑软件-Final Cut Pro v10.6.6中文版
    随着视频内容的不断发展和普及,越来越多的人开始将视频制作作为一种创作方式和表达形式。而想要制作高质量的视频,需要用到专业的视频编辑软件。其中,FinalCutPro是一款非常受欢迎的Mac上的视频剪辑软件,它具有丰富的功能和强大的性能,可以帮助用户轻松地完成复杂的视频制作任务。→......
  • 25)m2e-execution-not-covered 具体例子
    http://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html  这个插件定义的phase不包含在Eclipsem2e的生命周期内。(这种情况很正常,自己定义的插件所在的phase可以是各种各样的) 出现这种情况除了有个讨厌的红叉,不会影响正常的mavenbuild,只是eclipse......
  • m2e-execution-not-covered
    http://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.htmlBackgroundM2Eclipse0.12andearlierexecutedsomepartsofMavenbuildlifecycleinsideEclipseandthenconfiguredtheEclipseprojectbasedonafter-executionstatecollectedinM......
  • AtCoder Beginner Contest 281 Ex Alchemy
    洛谷传送门AtCoder传送门考虑设\(f_i\)为\(i\)的答案,那么:\[f_i=[x_i](1+x)^A\prod\limits_{j=2}^{i-1}(1+f_jx)\]这个东西其实是可以分治FFT的。具体地,设分治区间为\([l,r]\),要求一个\(r-l+1\)次多项式\(\prod\limits_{i=l}^r(1+f_ix)\)。......
  • Link-Cut-Tree详解
    引入树的链剖分有三种,重链剖分、实链剖分和长链剖分。实链剖分与其他两种不同的是,实儿子是可以根据需求转换的,而不是像另两种有着固定的定义方式。因此,实链剖分一般用来维护动态的树上问题。例如删边、加边和修改点权,以及树链剖分的常规操作(当然,要始终维持森林的性质)。辅助树......