P3051题解

题目链接

这道题是思维+数学题,实现起来其实很简单.

我们先假设Xi为i移到i+1的泥土数量. 我们因此可以得到以下式子:

然后我们从第一个土堆开始,注意土堆围成了一个环:

我们转换一下变为:

我们再枚举第二个:

我们可以把x1代入:

依次类推,我们列出通项:

令Ci = Bi-Ai,则通项转换为:

我们维护Ci的前缀和Si表示C1~Ci的和,我们就可以把式子转化为:

我们发现这些式子构成了一个绝对值不等式,而对于一个绝对值不等式当xn为S序列的中位数时和最小,这样x序列的和也就最小.

代码:

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int n,a[N],b[N],c[N],ans,mid;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i]>>b[i];
	for(int i=1;i<=n;i++) c[i]=c[i-1]+a[i]-b[i];
	sort(c+1,c+n+1), mid=c[n/2+1];
	for(int i=1;i<=n;i++) ans+=abs(mid-c[i]);
	cout<<ans;
	return 0;
}
相关推荐
不会就选b6 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
蒸蒸yyyyzwd6 小时前
秋招学习笔记 day46
c++·八股
千里码aicood9 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
码匠许师傅9 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
做cv的小昊10 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
لا معنى له10 小时前
World-In-World: World Models in a Closed-Loop World
算法
无名猿10 小时前
new/delete 与 malloc/free:为什么绝对不能混用
c++·内存管理·现代c++·踩坑记录
2601_9622186112 小时前
C++中decltype关键字的实现
开发语言·c++
Discipline102912 小时前
尼泊尔河流流量:天气驱动的预测与高流量风险
人工智能·算法