首页 > 其他分享 >E-双生双宿之错

E-双生双宿之错

时间:2025-01-22 11:32:52浏览次数:1  
标签:arr int 元素 cin 转化 数组 双生 双宿 之错

题目链接:https://ac.nowcoder.com/acm/contest/95323/E

题意:

给定一个长度为偶数的数组,要求将其转化为只有两个元素且两个元素数量相等的数组。每次操作可以将数组元素+1或者-1,求最小的操作次数

思路:

先将数组排序,前一半肯定对应要转化的较小的那一个元素,不妨设为x。后一半转化为较大的那一个元素,设为y
发现前一半和后一半的数组要转化为各自中位数时,代价是最小的(跟货舱选址那一题证明一样)
如果x和y相等还要将x-1,y和x,y+1做比较,取最小的
数组元素<=1e9,所以记得开long long

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int t;
const int maxn=1e5+5;
int arr[maxn];
signed main()
{
	ios::sync_with_stdio(false),cin.tie(0);
	cin>>t;
	while(t--)
	{
		int n;cin>>n;
		for(int i=1;i<=n;i++){
			cin>>arr[i];
		}	
		sort(arr+1,arr+1+n);
		int x=arr[(1+n/2)/2];
		int y=arr[(n/2+1+n)/2];
		int res=0;
		if(x==y)
		{
			int ans1=0,ans2=0;
			x=x-1;
			for(int i=1;i<=n;i++){
				if(i<=n/2){
					ans1+=abs(arr[i]-x);
				}else{
					ans1+=abs(arr[i]-y);
				}
			}
			x=x+1;
			y=y+1;
			for(int i=1;i<=n;i++){
				if(i<=n/2){
					ans2+=abs(arr[i]-x);
				}else{
					ans2+=abs(arr[i]-y);
				}
			}
			res=min(ans1,ans2);
		}else{
			for(int i=1;i<=n;i++){
				if(i<=n/2){
					res+=abs(arr[i]-x);
				}else{
					res+=abs(arr[i]-y);
				}
			}
		}
		cout<<res<<endl;	
	}	
	return 0;
}


标签:arr,int,元素,cin,转化,数组,双生,双宿,之错
From: https://www.cnblogs.com/benscode/p/18685377

相关文章

  • Java 转 C之错误处理
    提纲:从Java转向C的错误处理概念概述Java异常机制与C返回值/errno的对比C中错误处理的常用方式详解函数返回值errno全局错误码自定义错误码setjmp/longjmp模拟异常常见错误码列表(POSIX环境为例)Java与C的错误处理示例对比全量示例:从文件读数据并处理错误......
  • CAN通信之错误帧(一)
            CAN(ControllerAreaNetwork)总线是一种高可靠性的网络总线标准,主要用于汽车和工业环境中的数据通信。CAN同时也具有灵活性、可扩展性、抗干扰性和耐用性等等。最主要的还是其安全性,CAN协议的设计,通过错误帧和仲裁帧机制也大大减少了数据传输错误的可能性。总......
  • SpinalHDL之错误集(一)
    本文作为SpinalHDL学习笔记第七十六篇,作为错误集使用,类似高中生的错题集,几率使用SpinalHDL过程中遇到的问题,小到语法错误、版本兼容问题,大到SpinalHDL库函数错误等等,持续更新。SpinalHDL学习笔记总纲:SpinalHDL学习笔记_blackboxspinalhdl-CSDN博客目录:1.Stream库函数......
  • nginx之错误url重定向到首页
    nginx之错误url重定向到首页1、配置:[root@centos7.6~]#vitest.confserver{listen443ssl;listen80;server_namewww.magedu.org;root/data/site14/;#sslon;ssl_certificate/apps/nginx4/ssl/magedu.org.crt;......
  • SpinalHDL之错误修复(下篇)
    此箫非彼箫,不竹不丝不石。肉音别自唔咿。流苏瑟瑟纱垂,辨不出宫商角徵。一点樱桃欲绽,纤纤十指频移。课吞添吐两情痴,不觉悟灵犀味美推荐小说《回到明朝当王爷》,也有动漫,但小说改国漫通病,小说中杀伐果断人设极好的男主,到了动漫里就变成犹犹豫豫优柔寡断的废材,参见《元龙》。......
  • PHP基础之错误与异常
    目录1错误1.1简介1.2简单错误处理1.2.1使用die1.2.2die和exit区别1.3自定义错误处理1.3.1定义1.3.2创建错误函数1.4触发错误1.5抑制错误1.5.1行内错误抑制2异常2.1引言2.2什么是异常2.3Try、throw、catch、finally2.4自定义异常2.5设置顶层异常处理器3错误与异......
  • 毕设之错误解决办法
    今天遇到了个这个问题×Encounterederrorwhilegeneratingpackagemetadata.╰─>Seeaboveforoutput.note:Thisisanissuewiththepackagementionedabove,notpip.hint:Seeabovefordetails.python报的错误: 这个错误表明在生成包的元数据时遇......
  • 每个Go程序员必犯之错之切片循环错误
    每个Go程序员必犯之错原创 晁岳攀(鸟窝) 鸟窝聊技术 2023-12-1808:48 发表于北京 听全文说起每个程序员必犯的错误,那还得是"循环变量"这个错误了,就连Go的开发者都犯过这个错误,这个错误在Go的FAQ中也有提到Whathappenswithclosuresrunningasgoroutines?[......
  • 学习go语言编程之错误处理
    error接口Golang中有一个关于错误处理的标准模式,即:error接口。typeerrorinterface{ Error()string}对于大多数函数,如果要返回错误,大致上都可以定义为如下模式:funcFoo(paramint)(nint,errerror){ //...}将error作为多种返回值中的一个,但是这并非强制要求。......
  • 关于python中的class类犯得迷之错误
    昨天在写一个类,修了20几天假,忘了类的写法,刚开始我写成这样classA():def_init_():......然后我想把外面的一个方法c传进A类的方法b中,进行调用,就开始报错:object()takesnoparameters,刚开始很自信,不可能是自己写错,结果啪啪打脸,正确的类的写法是这样的......