E. Beautiful Array(题解)

news/2025/1/8 15:19:45/文章来源:https://www.cnblogs.com/1747176348mi/p/18657397

原题链接:

https://codeforces.com/problemset/problem/1986/E

思路:

排序,取模, 思维

关于操作:ai=ai+k;
若要使a1+m1*k==a2+m2*k;
则当a1, a2满足a1%k==a2%k,a1,a2可以满足a1+m1*k==a2+m2*k;并在需要(|a1-a2|)/k次操作。

将a数组取模后,用vector分别储存, a1和a2相差越小, 需要的次数越小,所以用一个sort排序。

取模后相同的数的个数可以全为偶数, 也可以只有一个奇数。其他则不满足。

偶数直接处理, 奇数需要枚举要放在中间的那个数, 可以看函数mark();

代码:

#include <bits/stdc++.h>
#define int long longusing namespace std;
const int xmmm=2e5+10;
int a[xmmm];
vector<int>s[xmmm];
int head[xmmm];
int p1[xmmm], p2[xmmm];
int s1[xmmm], s2[xmmm];
int mark(int x){for(int i=0;i<=head[x];i++)p1[i]=p2[i]=0;for(int i=0, j=1;i<head[x]-1;i+=2, j++)p1[j]=s[x][i+1]-s[x][i];for(int i=1, j=1;i<head[x];i+=2, j++)p2[j]=s[x][i+1]-s[x][i];for(int i=1;i<=head[x]/2;i++){s1[i]=s1[i-1]+p1[i];s2[i]=s2[i-1]+p2[i];}int mi=2e10;for(int i=0;i<head[x];i+=2){int ss=s1[i/2]+(s2[head[x]/2]-s2[i/2]);mi=min(mi, ss);}return mi;
}
void in(int t){for(int i=0;i<=t;i++)s[i].clear();
}
void solve(){int cnt=0;map<int, int>mp;int n, k;cin>>n>>k;for(int i=1;i<=n;i++){int t;cin>>t;if(mp[t%k]==0)mp[t%k]=++cnt;s[mp[t%k]].push_back(t);}int sum=0, num=0;for(int i=1;i<=cnt;i++){head[i]=s[i].size();if(head[i]%2)num++;}if(num>1){cout<<-1<<'\n';in(cnt);return ;}for(int i=1;i<=cnt;i++){sort(s[i].begin(), s[i].end());if(head[i]%2==0){for(int j=1;j<head[i];j+=2)sum+=(s[i][j]-s[i][j-1])/k;}else if(head[i]>1)sum+=mark(i)/k;}cout<<sum<<'\n';in(cnt);
}
signed main()
{int T;cin>>T;while(T--){solve();}return 0;
}

总结:

sort常用
写题最大的魅力就是能不断AC和一直WA
欢迎留言!
image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python语言中进程、线程、协程执行效率分析

python语言中进程、线程、协程执行效率比较。 问题:python语言中 进程、线程、协程执行速度哪个最快? 在Python中,进程、线程和协程的执行速度不能简单地进行比较,因为它们的性能取决于多种因素,包括任务类型、I/O操作、CPU密集型计算、操作系统调度策略以及Python解释器的…

CICD Day4、Jenkins主从架构

Jenkins主从架构(Master-Slave)是一种分布式架构,主节点负责管理项目配置、任务调度和监控,从节点用于执行具体的构建任务。Jenkins主从架构如下图所示当项目触发构建时,主节点将任务分配到某个从节点,从节点根据项目配置执行一系列操作,如拉取代、代码编译、部署到目标…

如何进一步做好信息收集

如何进一步做好信息收集 前言 前面一节介绍了一些信息收集的网站和工具,今天主要介绍一下如何进行半自动化的信息收集,全自动化的信息收集容易出现一些脏数据,而完全手工进行信息收集速率又太低,所以为了提高速率,我们需要充分利用一些脚本和工具 WHOIS半自动化收集 通过W…

链路诊断最佳实践:1 分钟定位错慢根因

面向生产应用“错”、“慢”两大风险,通过链路追踪及其关联数据、跨域实体关系和大模型算法,实现错慢请求智能根因定位,提升系统稳定性和运维效率。线上应用风险主要分为“错”、“慢”两大类。其中“错”的原因通常是程序运行不符合预期,比如 JVM 加载了错误版本的类实例,…

SwanLab最全使用教程:看这篇就够了

SwanLab是一个用于可视化和监控深度学习模型的工具。本文介绍了SwanLab的安装、启动和使用方法,并提供了参考链接。前言 机器学习通常涉及在训练期间可视化和度量模型的性能。 有许多工具可用于此任务。 在本文中,我们将重点介绍 SwanLab 开源工具,它可以服务于各种深度学习…

维修ABB IRB6700机器人的平衡缸3HAC043477出现异响

当ABB IRB6700机器人的平衡缸3HAC043477出现异响时,可能需要进行内部零件的检查和更换。以下是一些建议的步骤:1、检查IRB6700机械臂平衡缸的密封性:确保平衡缸的密封性良好,没有气体泄漏。如果发现有气体泄漏,可能需要更换密封件。2、检查活塞和缸体的磨损情况:如果活塞…

探索编程知识的宝库:www.readview.site 深度揭秘

在当今这个数字化浪潮汹涌澎湃的时代,编程技能已经如同基石一般,支撑着各行各业的创新与变革。无论是开发炫酷的手机应用、构建智能的物联网系统,还是投身于热门的大数据分析领域,扎实的编程功底都是迈向成功的关键一步。而在众多的学习资源中,www.readview.site 脱颖而出…

探索编程知识的宝库:[www.readview.site](http://www.readview.site) 深度揭秘

在当今这个数字化浪潮汹涌澎湃的时代,编程技能已经如同基石一般,支撑着各行各业的创新与变革。无论是开发炫酷的手机应用、构建智能的物联网系统,还是投身于热门的大数据分析领域,扎实的编程功底都是迈向成功的关键一步。而在众多的学习资源中,www.readview.site 脱颖而出…

Mysql连接报错排查解决记录

Mysql连接报错排查解决记录 背景:系统:uos server-1060e​ 运行环境kvm虚拟机​ mysql版本:5.7.44, for Linux (x86_64)问题现象: 宿主机重启后,kvm虚拟机内的mysql服务无法远程连接了。通过不同的客户端工具连接,报错现象分别如下: dbeaver-ce 工具连接报错: Can no…

CDS标准视图:维修工单工艺数据 I_MAINTORDEROPERATIONDATA

视图名称:维修工单工艺数据 I_MAINTORDEROPERATIONDATA 视图类型:基础 视图代码:点击查看代码 @EndUserText.label: Maintenance Order Operation Data @VDM.viewType: #COMPOSITE @AccessControl.authorizationCheck: #CHECK @AbapCatalog.sqlViewName: IPMORDOPERDATA @Cl…

关于const的使用

1、修饰整型变量const int a 就是声明了一种常量表示该变量的内容不可改变 2、对于修饰指针的const就有说法了 const int *a 和int* const a这是两种不同的用法 第一种: const int *a表示定义了一个指向const变量的指针,但是指针本身不是const类型,也就是说指针本身可以修改…

UOS系统mysql服务安装

UOS系统mysql服务安装 背景 1、安装环境:kvm虚拟机2、运行环境:uos server-1060e3、架构:x864、安装mysql版本:mysql-5.71、安装准备 # Mysql官网 https://downloads.mysql.com/archives/community/ # 下载安装包 wget -i -c http://dev.mysql.com/get/mysql57-community-…