AtCoder Regular Contest 100 - D - Equal Cut (二分)

AtCoder Beginner Contest 255「C 二分」「D 前缀和」「E」 阅读详情

题目

 

题意:

给你一个区间,让你把区间分成连续的4份,他们各自元素总和。【最大的减去最小的】要最小。

问你最小差值。

 

POINT:

区间为ABCD。

把AB所在的区间称为左区间。CD为右区间。

把左区间尽量分成平均的2分。右区间也一样。

这样枚举n个答案。然后取最小就行了。

 

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 2e5+33;
#define  LL long long

LL a[maxn],b[maxn];

void f(LL a,LL b,LL &Max,LL &Min)
{
	if(a==0||b==0) return;
	Max=max(Max,a);
	Max=max(Max,b);
	Min=min(Min,a);
	Min=min(Min,b);
}

LL ff(LL x,LL be,LL ed)
{
	LL sum=b[ed]-b[be-1];
	LL aim=sum/2+b[be-1];
	LL k=x;
	LL ju=abs(aim-b[x]);
	if(x-1>=be&&ju>abs(aim-b[x-1]))
	{
		ju=abs(aim-b[x-1]);
		k=x-1;
	}
	if(x+1<ed&&ju>abs(aim-b[x+1])){
		k=x+1;
	}
	return k;
}

int main()
{
	LL n;
	scanf("%lld",&n);
	for(LL i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		b[i]=b[i-1]+a[i];
	}
	LL ans=1e18;
	for(LL i=2;i<=n-2;i++){
		LL Max=0;
		LL Min=1e18;
		LL aim=b[i]/2;
		LL to=lower_bound(b+1,b+1+i,aim) - b;
		if(to==i) to--;
		to=ff(to,1,i);
		f(b[to],b[i]-b[to],Max,Min);
		aim=(b[n]-b[i])/2+b[i];
		to=lower_bound(b+i+1,b+n+1,aim) - b;
		if(to==n) to--;
		to=ff(to,i+1,n);
		f(b[to]-b[i],b[n]-b[to],Max,Min);
		ans=min(ans,Max-Min);
	}
	printf("%lld\n",ans);



}

 

[Atcoder]arc92 D - Two Sequences(二进制+二分) D - Two Sequences题目链接:D - Two Sequences题目大意:给两个数组长度为n的数组A, B。 计算所有A[i]+B[j]A[i] + B[j]的异或和。数据范围:1≤n≤2·1051 \le n \le 2·10^5 0≤ai,bi≤2280 \le a_i, b_i \le 2^{28} 解题思路:比赛的时候这道题我没有做出来, 只能想到按位拆分, 但是拆完了之后就 阅读详情

相关推荐

山体滑坡落石检测:YOLO场景特化实战指南

山体滑坡落石检测属于典型的小样本、强时序、高风险视觉感知任务,其本质是融合地质动力学先验与边缘计算约束的专用目标检测问题。不同于通用YOLO模型对静态刚性物体的假设,落石具有尺度跳跃、形态不规则、运动状态耦合等特性,需从数据增强、损失函数、标注范式到边缘部署进行全栈重构。关键技术包括位移趋势建模、岩体连通性约束、多层物理增强及地质可信度评估,广泛应用于铁路边坡监测、矿山智能巡检和地质灾害预警等工程场景。

weixin_33755557的博客 354

AtCoder - ABC 267 - E(二分/贪心)

给定一个有 n 个点 m 条边无向图,每个点都有权值。每次要删除一个点及其所连的所有边,删除某点的代价是与这个点直接相邻的所有点的权值和,使 n 次删除操作后的最大值最小,求其最小值。

m0_64172681的博客 689

ElasticSearch集群搭建

docker安装es集群

weixin_46562226的博客 2024

AtCoder D - Pairs(二分!再二分!)

题意: 给你nnn个数字,然后这些数字两两相乘,共n⋅(n−1)2\dfrac{n\cdot (n-1)}{2}2n⋅(n−1)​个数。问你第kkk个数的大小。 思路: 二分答案。 但是这样复杂度为n2log(n)n^2log(n)n2log(n)。妥妥超时,怎样把n2n^2n2复杂度降下来。 二分判定 我们可以分为两个集合,一个为正的,一个为负的 。 然后将他们排序,在正的集合里遍历二分,负的集...

一身清贫怎敢入繁华 840

【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking

这里所指的训练集是指保存了每一帧的跟踪结果的训练集,也就是说,每一次进行model update的时候,要用在这一帧之前所有跟踪到的样本。那么随着视频越来越长,这个训练集就会越来越大。因为当目标被遮挡或者丢失的时候,比较新的这些样本本身就是错的,那么模型很容易有model drift,就是被背景或者错误的目标污染,导致跟踪结果出错。如下图所示,Baseline是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易遗忘前面的样本,且容易对最近的若干帧样本过拟合。

qq_43799400的博客 2610

RIP协议

一、 Rip简介 早期在unix系统上使用,1988年才发布第一个rip协议标准“RFC1058”,是一种距离矢量(Distance-vector)协议。 1. 特点: 只关心跳数,下一跳,不关心整网拓扑。 基于传闻的路由协议。 2. 场景: 适用于规模小且可靠性要求低的网络环境,部署简单,因为其跳数限制,不适用于大型网络。 3. 工作原理: - 开启RIP发送RIP请求 - 接受请求发出响应...

ledrsnet的博客 8607

AtCoder practice contest B 归并排序 + 二分 / 贪心 + 信息熵

对于 $n = 26$ 的情况,归并排序最坏情况下需要 $99$ 次比较。对于 $n=5$ 的情况,比较 $c_1,c_2$,再比较 $c_3,c_4$,接着比较两组数据的最小者(不妨假设为 $c_1$),此时得到了一个有序的三元组 $c_1,c_3,c_4$,二分求解 $c_5$ 的位置并插入,此时 $c_1$ 右侧的元素至多为 $3$,再次二分插入 $c_2$ 即可。由于插入一个有序三元组需要二分比较的次数为 $2$,故总比较次数 $3+2+2=7$ 满足条件。

neweryyy的博客 480

潇洒郎: 小白一次性成功——红米 Note 12 5G Android12 系统13.0.16/14.0.9 小米红米手机解BL锁+ROOT-刷面具—官方ROM下载-线刷降级—解锁system系统分区

小白一次性成功——红米 Note 12 5G Android12 系统13.0.16/14.0.9 小米红米手机解BL锁+ROOT-刷面具—官方ROM下载-线刷降级—解锁system系统分区

潇洒郎的博客 4585

atcoder beginner contest 144 Gluttony(二分答案)

题目大意: 有an,bn ,我们找到an和bn每个元素的一种一一对应关系。使得min( max(ai*bi))。 已知我们可以进行操作让an中的任一个元素减少1。操作数最大为k,问我们怎么操作,可以min( max(ai*bi))。 解题思路: 首先,我们一个很直接的发现是:让an和bn进行一个排序,让an从小到大让bn从大到小排序,这时候让它们上下对齐放好,它们上下连线即为一个最佳匹配。...

FrostMonarch的博客 568

JavaScript实现量化交易策略(附完整源码)

JavaScript实现量化交易策略(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 721

损失函数大汇总(四十三)(Boundary Loss附公式推导与代码)

摘要 Boundary Loss是一种针对图像分割任务的边界优化损失函数,特别适用于小目标、细长结构和类别不平衡场景。它通过引入真实边界的有符号距离场(SDF),将边界距离优化问题转化为区域积分形式。与Dice Loss等区域重叠损失不同,Boundary Loss更关注预测边界与真实边界的精确对齐,而非整体区域重叠。其核心公式为像素级SDF值与预测概率的乘积求和,通过梯度调整使预测概率在真实边界内部升高、外部降低。该损失通常与区域型损失(如CE或Dice)联合使用,形成"区域分割+边界修正&qu

悦学共鸣,温柔以待,汇聚光芒,共同成长 354

AtCoder Regular Contest 100 (ARC100) D - Equal Cut 二分

原文链接https://www.cnblogs.com/zhouzhendong/p/9251420.html 题目传送门 - ARC100D 题意   给你一个长度为 $n$ 的数列,请切 $3$ 刀,形成 $4$ 个连续非空子序列,问这 $4$ 个非空子序列的各自的元素和 的极差为多少。   $n\leq 2\times 10 ^5$ 题解   如果切一刀,那么问题就很简单,尽量选...

weixin_30849591的博客 174

全网唯一OpenCyphal/UAVCAN教程(8)libcanard介绍

当Cyphal里,这个结构体代表一条完整的Cyphal消息,之后我们会根据metadata里提供的元信息,其实就是消息ID,调用对应的反序列化函数,将payload还原成具体的Cyphal消息。用于构造一个新的发送队列,原则上一个can物理接口需要分配一个发送队列,如果它们的MTU大小一致,是可以共用一条的。这个库不包含IO层,是平台无关的,意义是没有实现具体的数据收发,仅提供将发送出去的Cyphal消息转成can帧,以及将收到的can帧转成Cyphal消息。返回值是这条消息拆解成的can帧的数目。....

二进制君 2404

AtCoder Regular Contest 100 D - Equal Cut 思维 + 前缀和

传送门 文章目录题意:思路: 题意: 给你一个数组aaa,你要将其分成四份,让这四份中和的最大值−-−最小值最小,输出这个最小值。 n≤2e5,ai≤1e9n\le2e5,a_i\le1e9n≤2e5,ai​≤1e9 思路: 直接枚举不是很好做,考虑先枚举中间的位置iii,设被划分成的四段和分别是s1,s2,s3,s4s1,s2,s3,s4s1,s2,s3,s4且s1<s2,s3<s4s1<s2,s3<s4s1<s2,s3<s4,那么答案就是max(s2,s4)−min(

m0_51068403的博客 222

如何利用air780e与stm32c8c6进行通信实现给手机发送一条英文短信的功能?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1237

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

AtCoder Regular Contest 100 D:Equal Cut(前缀和优化暴力)解题报告

点击这里进入题目 题目大意:依旧言简意赅。给你N个数存为Ai,切三刀,分为四组,每一组的和为b·c·d·e,要求这四个数的极差(最大数和最小数的差)最小,输出这个最小值。 题目思路:看一眼数据范围就可以不用想纯暴力了。这个题我一开始也想了很久,但我后来仔细一看,发现是切三刀,而不是分为四组,要求每一组的数在数组里都是连续的,那就变得简单多了。先预处理...

aoke1952的博客 175

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

AtCoder3943 Two Sequences (二分)

题意: 给长度为n的数组a和b 输出a(1)+b(1)异或a(1)+b(2)异或…a(1)+b(n)异或a(2)+b(1)异或…a(2)+b(n)异或…a(n)+b(n)的值 即从a中任意选择一个数a(i),b中任意选择一个数b(j),所有情况组成的a(i)+b(j)的异或和 数据范围:n<=2e5,0<=a(i),b(i)<=228 思路: 看到异或很容易想到按位计算贡献 但是...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 318

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[AtCoder2165]Median Pyramid Hard 二分答案

套路题 二分答案,然后把大于等于它的变成1小于等于它的变成0 这样子的中位数是很有规律的 找到最上面那个玩意儿是啥就行了#include <iostream> #include <cstdio> #define N 1000050 #define INF (1<<30)#define gc() getchar()using namespace std; int a[N],b[N],n; inl

HbFS- 602

AtCoder:Widespread(二分)

D - Widespread Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statement You are going out for a walk, when you suddenly encounter N monsters. Each monster has a

junior19的博客 1081

「Atcoder247」 E - Max Min「二分」

E - Max Min 题目描述: 给定n个数a[i],问存在多少对(l, r)满足max{a[i]} == x && min{a[i]} == y 思路 : 我们枚举每个起点i,去找满足条件的区间的左端点l和右端点 r即可 确定左端点,则是找从i开始的第一个x和y出现的位置的最大值 确定右端点,则是找从i开始的第一个>x || <y的位置 用二分就行 #include <bits/stdc++.h> using namespace std; #define

Suryxin's blogs 679

【Atcoder】D - Triangles(二分加枚举)

题意:给你几条边,问你这些边可以组成多少三角形? 和这道题http://acm.hdu.edu.cn/showproblem.php?pid=4609几乎完全一样,本题数据太水哦 本题数据很水,所以可以直接排序后三重循环,排序可以减少枚举次数,即只需要判断两个较小的边之和是否是小于较大边。更高效的方法是排序后只枚举前两条较小边,对第三边进行二分查找。 #include <bit...

Nerdant 688

【AtCoder】C - Unexpressed 二分+思维

C 1010的数据量,我竟然傻傻的想着打表。 实际上二分,枚举i的范围从2到sqrt(n),把其所有ix次方存进set; 输出n-s.size(); #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; #define pb push_back #define fi first #defi

karshey的博客 259

AtCoder Beginner Contest 203 Pond(二分+二维前缀和)

样例输入 【样例1】 3 2 1 7 0 5 8 11 10 4 2 【样例2】 3 3 1 2 3 4 5 6 7 8 9 样例输出 【样例1】 4 【样例2】 5 据说这个题用对顶堆维护被卡了 先挂一手官方该题题解链接 大体思路: 二分,将原矩阵根据二分的值变成01矩阵,如果元素值> val 就变为1,否则0 对于k * k 的矩阵,统计区域内元素之和,如果 sum < ⌊k2 / 2⌋ + 1,意味着当前k * k矩阵的中位数小于x,而x是我们的答案(最小中位数), ①sum ..

PushyTao的博客 630

Atcoder C - Buy an Integer(二分)

题目链接 题意:有一家 商店卖整数,然后你去买,这个商店有 1 ~ 1e9 范围内的整数,你想要最大的,但是你只有 价值X的钱币,对于每一个整数 N的价格 为 : A * N+ B*d(N),A 和 B有题目给出,d(N)表示这个整数的位数。 输入 A B X 输出 能购买的最大整数,否则输出 0。 对于每个整数的价格 A * N+ B*d(N) ,显然这是个单调递增的函数。我...

一身清贫怎敢入繁华 929

【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)

题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[],是这一次计算之前的那个a[]。每一次不操作开头和结尾的两个位置。这样子每一次都会减少2个元素,问你最后剩下的元素是什么。 数据范围: 1&amp;lt;=N&amp;lt;=10^5 思路: 看见这道题正解是二分的时...

G20202502的博客 462
上一篇: 牛客练习赛22 - C 简单瞎搞题 (bitset优化背包)
下一篇: Educational Codeforces Round 47 - E. Intercity Travelling
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值