当前位置: 首页 > news >正文

P3051题解

题目链接

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

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

A[i] - x[i] +x[i-1]=B[i]

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

A[1] - x[1] + x[n] = B[1]

我们转换一下变为:

x[1] = x[n] + A[1] -B[1]

我们再枚举第二个:

x[2] = x[1] + A[2] - B[2]

我们可以把x[1]代入:

x[2] = x[n]+ A[1]+A[2] -B[1] -B[2]

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

x[m] = x[n] + \sum_{i=1}^{m}A[i] - \sum_{i=1}^{m}B[i]

令C[i] = B[i]-A[i],则通项转换为:

x[m] = \left | x[n] - \sum_{i=1}^{m}C[i] \right |

我们维护C[i]的前缀和S[i]表示C[1]~C[i]的和,我们就可以把式子转化为:

x[m]=\left | x[n]-s[m] \right |

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

代码:

#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;
}

http://www.dtcms.com/a/414999.html

相关文章:

  • 想给孩子找点题做 都有什么网站化学课件
  • 【2026计算机毕业设计】基于Springboot的汉服交流的微信小程序
  • uutils coreutils - GNU coreutils 的 Rust 跨平台实现
  • 如何在阿里巴巴上做网站去哪网站备案吗
  • 软考中级-软件设计师(五)
  • 零基础学Docker(5)--容器数据卷
  • list列表
  • 团购网站做摄影网站编程开发
  • Kurt-Blender零基础教程:第4章:粒子篇
  • Qt常用控件之QTextEdit
  • ImageHash - Python 图像哈希库
  • 初识 Vue
  • 做网站销售水果上海建设安全协会网站
  • 正能量视频素材免费下载网站现代营销手段有哪些
  • Prj11-8088单板机C语言大综合(一)
  • 44.网络层
  • 肇庆网站制作软件郑州企业网络推广公司
  • ALLaM - 专为阿拉伯语设计的AI大语言模型
  • Docker Compose 停止命令对比
  • 北京网站推广优化更改wordpress端口
  • 优势的seo网站优化排名网站内容质量
  • Transformer 能做什么?—— 多领域应用全景
  • 认识RAG
  • 网站人员队伍建设薄弱怎么在自己做的网站上发视频教程
  • 摄影网站设计说明书东莞招聘信息最新招聘官方网
  • bevformer 安装 环境配置
  • 华为手机鸿蒙系统 4.2 / 4.3 安装谷歌框架的详细教程
  • 南昌网站开发爱网站长尾
  • 工业摄像头是应用于工业现场的高性能数字图像采集设备
  • 【08】VisionMaster入门到精通——卡尺工具和边缘查找