G. The Great Equalizer

news2025/1/21 11:24:15

Problem - G - Codeforces

思路:通过它给定的这个操作,我们能够发现操作的本质,在排序后,其实每次操作之后,都会把相邻的两个数的差值减少1,所以最大的操作次数就是相邻的最大的差值,并且这个是可以用set维护出来的,但是知道了最大的差值怎么求出变化后的值一直没想出来,看了题解发现自己很蠢,那么很明显能够发现最大值每次都在加一,那么最后的答案就是相邻的最大差值+在放入平衡器之前的最大值

// Problem: G. The Great Equalizer
// Contest: Codeforces - Codeforces Round 894 (Div. 3)
// URL: https://codeforces.com/contest/1862/problem/G
// Memory Limit: 256 MB
// Time Limit: 4000 ms

#include<bits/stdc++.h>
#include<sstream>
#include<cassert>
#define fi first
#define se second
#define i128 __int128
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> PII;
const double eps=1e-7;
const int N=5e5+7 ,M=5e5+7, INF=0x3f3f3f3f,mod=1e9+7,mod1=998244353;
const long long int llINF=0x3f3f3f3f3f3f3f3f;
inline ll read() {ll x=0,f=1;char c=getchar();while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=(ll)x*10+c-'0';c=getchar();} return x*f;}
inline void write(ll x) {if(x < 0) {putchar('-'); x = -x;}if(x >= 10) write(x / 10);putchar(x % 10 + '0');}
inline void write(ll x,char ch) {write(x);putchar(ch);}
void stin() {freopen("in_put.txt","r",stdin);freopen("my_out_put.txt","w",stdout);}
bool cmp0(int a,int b) {return a>b;}
template<typename T> T gcd(T a,T b) {return b==0?a:gcd(b,a%b);}
template<typename T> T lcm(T a,T b) {return a*b/gcd(a,b);}
void hack() {printf("\n----------------------------------\n");}

int T,hackT;
int n,m,k;
int w[N];

void solve() {
	n=read();
	
	for(int i=1;i<=n;i++) w[i]=read();
	
	if(n==1) {
		m=read();
		
		while(m--) {
			int x=read(),c=read();
			printf("%d ",c);
		}
		printf("\n");
		return ;
	}
	
	set<int> s;
	map<int,int> cnt;
	for(int i=1;i<=n;i++) {
		cnt[w[i]]++;
		if(cnt[w[i]]==1) s.insert(w[i]);
	}
	
	priority_queue<int,vector<int>,less<int> > q;
	map<int,int> st;
	
	int last=-1;
	for(auto &it:s) {
		if(last==-1) last=it;
		else {
			int t=it-last;
			q.push(t);
			last=it;
		}
	}
	
	m=read();
	while(m--) {
		int x=read(),c=read();
		
		int k=w[x];
		
		cnt[k]--;
		if(cnt[k]==0) {
			auto it=s.lower_bound(k);
			int tit=*it;
			if(it==s.begin()) {
				int l=*it;
				it++;
				int r=*it;
				st[r-l]++;
			}else {
				auto it1=it,it2=it;
				it1--;
				it2++;
				if(it2==s.end()) {
					int a=*it1,b=*it;
					st[b-a]++;
				}else {
					int a=*it1,b=*it,c=*it2;
					st[b-a]++;
					st[c-b]++;
					q.push(c-a);
				}
			}
			
			s.erase(s.lower_bound(tit));
		}
		
		cnt[c]++;
		w[x]=c;
		if(cnt[c]==1) {
			auto t1=s.lower_bound(c);
			if(t1==s.end()) {
				auto it1=t1;
				it1--;
				int ta=*it1,tb=c;
				q.push(tb-ta);
				s.insert(c);
			}else {
				if(t1==s.begin()) {
					int ta=c,tb=*t1;
					q.push(tb-ta);
					s.insert(c);
				}else {
					auto it1=t1,it2=t1;
					it1--;
					int ta=*it1,tb=c,tc=*it2;
					q.push(tb-ta),q.push(tc-tb);
					st[tc-ta]++;
					s.insert(c);
				}
			}
		}
		
		while(q.size()&&st[q.top()]!=0) {
			st[q.top()]--;
			q.pop();
		}	
		
		auto t=s.rbegin();
		
		int tk=0;
		if(q.size()) tk=q.top(); 
		
		printf("%d ",*t+tk);
	}
	
	printf("\n");
}   

int main() {
    // init();
    // stin();
	// ios::sync_with_stdio(false); 

    scanf("%d",&T);
    // T=1; 
    while(T--) hackT++,solve();
    
    return 0;       
}          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch学习:torch.max()

文章目录 torch.max()dimkeepdimdim0dim1 out&#xff1a;返回命名元组 (values, indices) torch.max() torch.max(input) → Tensor&#xff1a;返回 input 张量中所有元素的最大值。 注意输入的必须是张量形式&#xff0c;输出的也为张量形式 当输入为tuple类型时&#xf…

如何写营销软文?写营销软文需要注意什么?

营销软文是企业推广产品或服务的重要手段之一。一篇优秀的营销软文能够吸引读者的关注并引起他们的购买欲望&#xff0c;进而增加转化率。本文伯乐网络传媒将分享如何写好营销软文&#xff0c;以及注意事项&#xff0c;帮助您提升营销软文的效果。 一、明确目标受众和营销目标 …

基于SSM的汽车租赁系统

基于SSM的汽车租赁系统【附源码文档】、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户 管理员&#xff1a;用户管理、汽车…

【LeetCode题目详解】第十章 单调栈part01 739. 每日温度 ● 496.下一个更大元素 I (day58补)

本文章代码以c为例&#xff01; 一、力扣第739题&#xff1a;每日温度 题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。…

[Google DeepMind] LARGE LANGUAGE MODELS AS OPTIMIZERS

Large Language Models as Optimizers 文章链接 总体架构Optimization by PROmpting (OPRO)&#xff1a;最开始输入meta-prompt&#xff0c;这个初始的meta-prompt基本上只是对优化任务进行了描述(也会有few-shot example)。输入后LLM便会生成一个solution&#xff0c;这个sol…

解决SpringMVC在JSP页面取不到ModelAndView中数据

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 问题描述 ModelAndView携带数据跳转到指定JSP页面后在该页面通过EL表达式取不到原本存放在ModelAndView中的数据。 问题原因 在IDEA中创建Maven工程时web.xml中默认的约束…

贝叶斯网络实战(附代码)

贝叶斯网络实战 1. 建立虚拟环境2. 学生是否获得推荐信3. 泰坦尼克数据集预测存活人员参考 1. 建立虚拟环境 conda create -n BayesNN38 python3.8 conda activate BayesNN38 pip install pgmpy2. 学生是否获得推荐信 代码如下&#xff1a; from pgmpy.models import Bayesia…

Spring Boot集成EasyExcel实现数据导出

在本文中&#xff0c;我们将探讨如何使用Spring Boot集成EasyExcel库来实现数据导出功能。我们将学习如何通过EasyExcel库生成Excel文件&#xff0c;并实现一些高级功能&#xff0c;如支持列下拉和自定义单元格样式&#xff0c;自适应列宽、行高&#xff0c;动态表头 &#xff…

处理:对于移动类型Z21和帐户8051010100 供应商货物移动 (014)的不同的字段选择

对于移动类型Z21和帐户8051010100 供应商货物移动 (014)的不同的字段选择 消息编号 M7093 诊断 来自 移动类型Z21和 总帐科目8051010100的字段选择串的比较显示了在一点或更多点处有不兼容的字段选择组合。 字段选择不同的字段&#xff1a;供应商货物移动 范例 在移动类型屏幕上…

JavaScript逻辑题:输出1000之内的所有完数。所谓完数指的是:如果一个数恰好等于它的所有因子之和,这个数就称为完数。

// 定义函数function judgeNum(){// 定义数组存储完数let arr []// for循环1000以内的所有数for(let i 1;i<1000;i){// 定义sum存储一个数的因子之和let sum 0;// 内层循环一个数的因子for(let j 1;j<i;j){if(i % j 0){sum j;}}// 如果一个数和它的因子之和相等&am…

【idea】将已有项目文件夹添加为项目模块

前后效果 变更方法 适用场景 项目为maven项目适用&#xff0c;如果不是maven项目不适用

IDEA指定Maven settings file文件未生效

背景&#xff1a;在自己电脑上配置的时候&#xff0c;由于公司项目和我自己的项目的Maven仓库不一致&#xff0c;我就在项目中指定了各自的Maven配置文件。但是我发现公司的项目私有仓库地址IDEA总是识别不到&#xff01; 俩个配置文件分别是&#xff1a; /Users/sml/Mine/研发…

Vue3 快速入门和模板语法

vite方式建立项目 1.安装vue vite组件 # 安装组件或更新 npm i vite vue -g# 建立项目 npm init vue v301 cd v301 npm run dev# 建立项目 vue create vue v302 cd v302 npm run dev 2. 配置项目vite.config.ts import {fileURLToPath, URL} from node:urlimport {defineConfi…

web-案例

分页插件 登录 事务

Docker进阶:Docker Compose(容器编排) 管理多容器应用—实战案例演示

Docker进阶&#xff1a;Docker Compose&#xff08;容器编排&#xff09; 管理多容器应用—实战案例演示 一、Docker Compose简介二、Docker Compose安装三、Docker Compose卸载四、Docker Compose核心概念4.1、一文件原则&#xff08;docker-compose.yml&#xff09;4.2、服务…

时间序列场景下多种数据填充算法实践与对比分析

在时间序列建模任务中&#xff0c;模型往往对于缺失数据是比较敏感的&#xff0c;大量的缺失数据甚至会导致训练出来的模型完全不可用&#xff0c;在我前面的博文中也有写到过数据填充相关的内容&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《python 基于滑动平均…

硬件学习 PAD9.5 day01 原理图布局开始设置, 元器件的调用和绘制, 新建库, 库添加元器件,

1. 原理图的布局设置 1.1 打开布局设置界面 1.2. 布局设置界面 1.3. 界面大小设置 自己 点击框里的 向下的箭头 获取更多的选择。 1.4 包括白框的的大小 2. 元器件的调用 和绘制 2.1. 打开一个库 和 新建一个库 1. 进入新建库的界面 和选择系统自带的库 2.2 绘制新的器件的…

【计算机视觉 | 目标检测】干货:目标检测常见算法介绍合集(四)

文章目录 四十六、Parallel Feature Pyramid Network四十七、ScanSSD四十七、RetinaMask四十八、CornerNet-Saccade四十九、CentripetalNet五十、Fast Focal Detection Network五十一、CornerNet-Squeeze五十二、Paddle Anchor Free Network五十三、Human Robot Interaction Pi…

[Rust GUI]eframe(egui框架)代码示例

-2、eframe代替品 你可以使用egui的其他绑定&#xff0c;例如&#xff1a;egui-miniquad&#xff0c;bevy_egui&#xff0c;egui_sdl2_gl 等。 -1、注意 egui库相当于核心库&#xff0c;需要借助eframe框架就可以写界面了。 eframe使用egui_glow渲染&#xff0c;而egui_glow…

华为云云耀云服务器L实例评测 | 强大性能与高可靠性的完美结合

华为云云耀云服务器L实例评测 | 瑞吉外卖下载与部署_软工菜鸡的博客-CSDN博客 上次发布了一篇手把手带领读者在华为云服务器搭建后端程序员无人不知的 瑞吉外卖 项目&#xff0c;效果良好&#xff0c;很多粉丝给我反馈还想学习别的项目以及其它软件的服务器部署&#xff0c;这不…