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

Codeforces Round 973 (Div. 2)

ABC 略

D
如果存在a[i]>a[j],i<j那么一定可以通过操使得a[i]和a[j]的差距变小,我们最后可以构造出一个单调不递减数列,那么答案就是a[n]-a[1],由于序列的和是固定的,那么当最小值取最大时,从1~n-1,a[i]<a[1]时,差的值从前面移的值补,a[i]>a[1]多的值可以作为补后面的值,最后剩下补给a[n]的值是最小的,可见a[1]q取最小值最大时a[n]可取的理论最大值最小。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10;
int T,n,a[N],l,r,minx,maxn;
void init()
{
}
bool check(int x)
{int val=0;for(int i=1;i<=n;i++){if(a[i]>x) val+=a[i]-x;if(a[i]<x){if(val<x-a[i]) return false;val-=x-a[i];}}return true;
}
bool check2(int x)
{int val=0;for(int i=1;i<=n;i++){if(a[i]>x) val+=a[i]-x;if(a[i]<x){val-=x-a[i];val=max(val,(int)0);}}if(val) return false;return true;
}
void solve()
{cin>>n;init();for(int i=1;i<=n;i++)cin>>a[i];l=1,r=a[1];while(l<=r){int mid=(l+r)/2;if(check(mid)) {minx=mid;l=mid+1;}else r=mid-1;}l=1,r=1e12;while(l<=r){int mid=(l+r)/2;if(check2(mid)) {maxn=mid;r=mid-1;}else l=mid+1;}cout<<maxn-minx<<endl;
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cin.tie(0);cout.tie();cin>>T;while(T--) solve();
}

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

相关文章:

  • uniapp自定义圆形勾选框和全选框
  • 软件开发、项目开发基本步骤
  • MCU芯片AS32S601在卫星光纤放大器(EDFA)中的应用探索
  • NineData新增SQL Server到MySQL复制链路,高效助力异构数据库迁移
  • ubuntulinux快捷键
  • 「iOS」——KVC
  • ubuntu22.04 python升级并安装pip命令
  • 轻量化RTSP视频通路实践:采集即服务、播放即模块的工程解读
  • 第十讲:stack、queue、priority_queue以及deque
  • LeetCode 热题100:160.相交链表
  • [CH582M入门第十步]蓝牙从机
  • Acrobat JavaScript Console 调试控制台
  • 关于网络安全等级保护的那些事
  • 【MyBatis-Plus】核心开发指南:高效CRUD与进阶实践
  • 基于Kafka实现简单的延时队列
  • XiangJsonCraft:用JSON快速构建动态HTML页面的利器
  • 第十章 W55MH32 SNTP示例
  • LarkXR实时云渲染支持Quest客户端手势操作:免手柄直控云XR应用
  • 刷完jetpack后无法打开安装的浏览器的解决办法useful
  • arm64架构开发板上调用奥比中光深度摄像头用于视觉测距
  • Linux -- 进程【下】
  • OpenHarmony BUILD.gn中执行脚本
  • 全连接队列
  • 【Ansible】Ansible 管理 Elasticsearch 集群启停
  • 【提示词技巧】高级提示方法与框架
  • 机器学习优化技术深度解析:自适应优化器对比与Adam的二阶矩偏差修正证明
  • 系统学习算法:专题十四 链表
  • AI黑科技:GAN如何生成逼真人脸
  • 基于 Qiankun 的微前端实践案例:电商平台多模块整合方案
  • HCIP笔记