Codeforces Round #490 (Div. 3) D. Equalize the Remainders

Codeforces 进阶计划:从 Specialist 到 Expert 训练计划:做 Codeforces Round (Div. 3)、Codeforces Round (Div. 3) 和 Educational Codeforces Round 通过人数少于 1000 人的题目。 目前做了 3 题。 Codeforces Round #490 (Div. 3) D. Equalize the Remainders 给定两个整数 n,mn,... 阅读详情

1,题目描述:

D,使余数相等。
给你一个含有n个整数的数组a1,a2,…,an,和一个正整数m。保证m是n的因数。
在单次移动中,你可以选择在1到n之间的任一位置的数ai加1.
计算cr(0~m-1)——每个元素除以m之后的余数r。换句话说,对于每个余数,
找到与它相对应的元素。
你的任务是改变数组的元素使得c0=c1=…=cm-1=n/m;
找到满足上述要求的最小的需要改变的次数
输入:
第一行包括两个整数n,m(1~2e5,1<=m<=n)保证m是n的因数。
第二行是n个整数a1,a2,…an(0~1e9)
输出:
第一行,输出第一行——最小需要移动的数字满足下面的情况。对于任一个余数
(0~m-1),数组中的元素都有一个余数等于n/m。
第二行,输出任一数组满足条件的。可以从原数组中得到的最小的改变的次数。结果
数组中的所有结果不超过1e18.
(翻译完题目我整个人是很懵逼的,我理解题意用了好久好久好久。。。。。
最后get到:原来是0~m-1的余数的所有个数都相等等于n/m)

http://codeforces.com/contest/999/problem/D

3,AC code:

代码注释:
*类型:贪心

#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
typedef long long ll;
const int N=2e5+6;
set<ll>st;
//cnt数组用来存0~m-1位置的所有的余数的个数都为n/m
//arr数组用来存输入的数组,以及改变后的数组
//res用来存当前值的余数
//val用来存应该最优应该选取的余数的值。
//ans用来存需要改变的操作数 
ll n,m,cnt[N],arr[N],res,val,ans;
int main(){
    cin>>n>>m;
    for(int i=0;i<m;cnt[i++]=n/m)st.insert((ll)i);
    for(int i=0;i<n;i++){
        cin>>arr[i];
        res=arr[i]%m;
        //贪心部分 
        if(res>*st.rbegin())val=*st.begin(); 
        else val= *st.lower_bound(res);
        //贪心部分 
        ans=ans+(val-res+m)%m;
        if(!--cnt[val])st.erase(val);
        arr[i]=arr[i]+(val-res+m)%m;
    }
    cout<<ans<<endl;
    for(int i=0;i<n;i++)cout<<arr[i]<<" ";
}
Rocky Linux 9 离线环境Docker部署全攻略:从依赖打包到服务启动 本文详细介绍了在Rocky Linux 9纯离线环境中部署Docker的完整流程。从在联网环境精准下载Docker静态二进制包及所有系统依赖RPM包,到在隔离服务器上按顺序安装依赖、部署二进制文件、配置systemd服务并进行权限与网络调优,提供了从零到一的可复现实战指南。文章重点解决了离线部署的核心难题,并分享了搭建私有镜像仓库等进阶技巧,是运维人员在严格网络管控环境下部署容器服务的必备参考。 阅读详情

相关推荐

【GESP】C++四级考试大纲知识点梳理, (10) 文件读写和重定向

其实,由于本人也是边学、边实验、边总结,且对考纲深度和广度的把握属于个人理解。因此本文更多的不是一个教程,而是个人知识梳理,如有遗漏、疏忽,欢迎指正、交流。孩子放假,出游一周,没有更新。刚刚归来,继续学习。GESP C++四级官方考试大纲中,共有11条考点,本文针对第10条考点进行分析介绍。(10)掌握文件操作中的重定向,实现文件读写操作,了解文本文件的分类,掌握写操作、读操作、读写操作。GESP C++四级官方考试大纲中,共有11条考点,本文针对第10条考点进行分析介绍。孩子放假,出游一周,没有更新。

CoderCoding的博客 525

基础数据结构——数组

从这一篇文章开始,后面会讲一些数据结构和算法,这篇文章我们先来看看“数组”。什么是数据结构?每道编程题都有输入数据和输出数据,输入数据是代码处理的对象,输出数据是代码运行的结果。代码在执行过程中需要用一定的方式来存储、处理数据,就是数据结构。《数据结构》教材一般包含线性表(数组、链表)、栈和队列、串、多维数组和广义表、哈希、树和二叉树、图、排序等。基础数据结构数组、链表、队列、栈、二叉树。数组是最简单的数据结构,其把数据连续存储在空间中。

m0_52711790的博客 840

CATIA高效设计:自定义快捷键全攻略

本文详细介绍了如何在CATIA中自定义快捷键以提升设计效率。通过减少鼠标依赖、优化工作流程和减轻手腕疲劳,合理设置快捷键可显著提高建模速度。文章提供了从基础设置到高级配置的全流程指南,包括解决冲突、推荐方案及外设扩展建议,帮助用户快速掌握CATIA高效设计技巧。

weixin_42648844的博客 584

D. Equalize the Remainders[模拟+set中lower_bound效率问题]

D. Equalize the Remainders题意:要求改变一个数组,使得模m后,结果为0,1,2,3,...,m-1都是n/m个,每次操作可以选择一个数+1,问至少执行多少次,并输出最终的数组思路:模拟当前元素应该往哪个元素去改变注意:std::set::lower_bound的复杂度为logN,而std::lower_bound的复杂度在set里是logn+n,原因大致是set是一颗平衡...

Haipai1998的博客 463

数据分析项目:电商用户行为分析系统

本报告基于某电商平台用户行为数据(采样10%),通过清洗、探索性分析及多维度建模,旨在挖掘用户行为特征、商品销售规律及用户价值分层,为运营策略优化提供数据支持。原始数据字段:用户ID、商品ID、类目ID、行为类型、时间戳。长尾商品(购买量低)可考虑捆绑销售或限时折扣,提升动销率。长尾商品(购买量低)可考虑捆绑销售或限时折扣,提升动销率。,少数高活跃用户贡献大部分行为,多数用户行为次数较少。

Nervousr的博客 1702

数学建模学习(75):全局敏感性分析Morris 方法

敏感性分析 (SA) 是分析不同应用条件下模型行为的基本实践。提出了许多 SA 技术,从简单的筛选方法到计算成本高昂的基于方差的方法。本篇内容我们通过将 Morris 方法来对模型进行分析。

全栈川川 1万+

Codeforces Round #550 (Div. 3) D. Equalize Them All

题意,题解都在代码里 代码: #include <iostream> #include <bits/stdc++.h> using namespace std; //#define int long long const int maxn=2e5+5; int s[maxn]; int cnt[maxn]; signed main(){ /* ...

- 223

基于STM32+OneNet设计的物联网智慧路灯(100)

本次设计的智能路灯采用STM32芯片和OneNet物联网平台进行连接,开发出支持太阳能充电锂电池供电、GPS定位上传位置信息、手动/自动控制路灯开关、环境光照调节、红外传感器检测周围人员、空气质量监测等多项功能。同时,当路灯发生异常情况时,系统可以自动发送邮件或短信到指定邮箱或电话。

7727

CodeForces - 999D——Equalize the Remainders

题目链接:https://vjudge.net/contest/336720#problem/J 题意:给出一个序列A一共n个数,给出一个m是n的因子。每次可以进行一个操作,使得A【i】+1。求至少进行多少次操作可以满足序列A中每个元素%m后的序列恰好有n/m个【0~m-1】. #include<stdio.h> #include<algorithm> #includ...

creator平 314

Multisim14使用教程详尽版--(2025最新版)

摘要:本文详细介绍了Multisim14电路仿真软件的功能和使用方法。主要内容包括:1)主流电路仿真软件比较,突出Multisim在教学、竞赛设计中的优势;2)软件界面说明,涵盖菜单栏、工具栏、元器件库和仪器仪表;3)18类元器件分类详解及其使用操作;4)15种仪器仪表的原理和应用场景;5)电路原理图设计与仿真流程;6)基本电路分析方法(直流静态工作点分析、交流分析等)。文章还提供了硬件工程师笔试面试相关资源链接,涵盖电阻、电容、三极管等器件知识及AD软件操作指南。通过系统讲解,帮助用户掌握Multisim

XU157303764的博客 2万+

医疗工具识别(手术器械计数):基于YOLOv8的智能手术器械管理系统

YOLOv8是Ultralytics公司于2023年推出的最新一代目标检测算法,相比前代YOLOv5,在精度和速度上都有显著提升。Anchor-free检测:不再使用预定义的anchor boxes,简化了检测流程更高效的骨干网络:采用CSPDarknet53作为特征提取网络多尺度特征融合:通过PANet结构实现更好的小目标检测损失函数优化:使用CIoU损失提高边界框回归精度YOLOv8提供了多种规模的模型(n/s/m/l/x),可根据实际需求在精度和速度之间进行权衡。

YOLO 480

D. Equalize Them All

给你 n 个数,每次操作可以选择两个相邻的数字,并把他们都变成其中一个数字。问最少需要通过几次操作能使 n 个数字变的全部相等?要是操作数最小,我们只需要从出现次数最多的数字开始向两边变化,每次记录操作的下标以及使用操作的编号即可。

m0_60610120的博客 322

NXP S32k3 MCAL ADC配置

S32K3 配置MCAL ADC

Leon_0125的博客 5072

Codeforces Codeforces Round #490 (Div. 3) D. Equalize the Remainders

题目 题意: 给出一个n,一个m(n%m==0),之后n个数,即数组a。一次操作可以对a数组任意一个元素+1。一个数组c,大小为m,**c[i]为数组a的元素对m取余结果为i的数量,问:使所有c[i]**等于n/m,至少进行多少次操作,并且输出操作后的数组a。 做法: 对于,每一个 ...

reedthink的博客 204

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Codeforces Round #490 (Div. 3) D. Equalize the Remainders(好奇怪的迭代器用法)

原题地址:http://codeforces.com/contest/999/problem/D 题意:本题就是给你n,m,保证n能被m整除,给你n个数,对这些数操作+=1,使得这些数%m后,得到的数是从0~m-1,且没个数出现n/m次。 思路:贪心,首先记录每个取余m后的结果数的个数,如果个数不大于n/m则不用改变,否则(需要改变)插入set,然后二分查找出大于该数的且余数个数小于n/m的数...

yiqzq的博客 490

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Codeforces Round #490 (Div. 3) D. Equalize the Remainders E Reachability from the Capital

E. Reachability from the Capital time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output There are n n cities and m m roads in Berland. E...

Dave_lzw的博客 504

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Codeforces Round #490 (Div. 3)(A-E)题解

Codeforces Round #490 (Div. 3)(A-E)题解 传送门 A. Mishka and Contest 思路:签到题,双指针模拟即可。 时间复杂度:O(n)O(n)O(n) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=105+5,M=1e6+5,inf=0x3f3f3f3f,mod=1e9+7; #define mst(a) memset(a,0,sizeo

Harris-H的博客 743

Codeforces Round #490 (Div. 3) A、B、C、D(思维)、E(tarjan)、F(贪心dp)

题目链接:https://codeforc.es/contest/999 嗯,补题还是div3好AK,开了套虚拟,四个题 D题难度1900,独立做出还是挺激动开心的 E题看错了,导致没做出来,是从首都城市到能达到其他城市,我看成从其他城市到达首都了。 前三题水题至极,15分钟A没啥好说的。 A. Mishka and Contest 给n,k,n是数组长度 题意都告诉做法了,只能从两...

ccsu_deer 703

Equalize the Remainders(思维)

Equalize the Remainders You are given an array consisting of n integers a1,a2,…,an, and a positive integer m. It is guaranteed that m is a divisor of n . In a single move, you can choose any positi...

codeswarrior的博客 661

Equalize the Remainders

You are given an array consisting of n integers a1,a2,…,an, and a positive integer m. It is guaranteed that m is a divisor of n . In a single move, you can choose any position i between 1 and n and...

codertcm的博客 366

codeforces 490 div3 D. Equalize the Remainders

题目大意: 给你n个数和一个m,要求余数为0-m-1的数的数量正好是n/m,m保证是n的因子,每个数只能执行加的操作,最后输出操作的次数以及修改后的数组结果。 解题思路: 主题思想是贪心,就是让那些余数值超过n/m的数向离他最近且余数值没有满足条件的数“移动”。这里的“移动”有个巧妙的处理,就是利用STL集合中的set.lower_bound()函数,集合中保存那些未满足条件的余数值,l...

Apollo的博客 308

4306 序列处理(贪心)

1. 问题描述: 给定一个长度为 n 的整数序列 a1,a2,…,an。我们可以对该序列进行修改操作,每次操作选中其中一个元素,并使其增加 1。现在,请你计算要使得序列中的元素各不相同,至少需要进行多少次操作。 输入格式 第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,an。 输出格式 一个整数,表示所需的最少操作次数。 数据范围 前 6 个测试点满足 1 ≤ n ≤ 10。所有测试点满足 1 ≤ n ≤ 3000,1 ≤ ai ≤ n。 输入样例1: 4 1 3 1 4 输

二哈 1456

codeforces 999D Equalize the Remainders

http://www.elijahqi.win/archives/3822 看做一个有向环 考虑我们其实从每个点出发如果采用最优策略那么一定都是一样的 那么不妨来看 我一遍扫描一边带着前缀和 如果遇到是小于平均值的我优先分配给他我最前面的 注意扫描一遍是不够的 但最多两遍即可 因为最优策略不可能绕一圈以上 #include&lt;bits/stdc++.h&gt; #define l...

Elijahqi 1771

Equalize the Remainders(CF-999D)

Problem Description You are given an array consisting of n integers a1,a2,…,an, and a positive integer m. It is guaranteed that m is a divisor of n. In a single move, you can choose any position i ...

Alex_McAvoy的博客 618

Codeforces Round #490 (Div. 3)【完结】

2022.3.3 题单地址: 目录

辉小歌的博客 660

Codeforces Round #490 (Div. 3) (A+B+C+D+E+F)

蒟蒻补完整的第一场cf QAQ A题 题目链接(模拟+签到) 题意:给你一个长度为N个序列,你可以每次从最左边或者最右边删除一个小于等于k的数字,问你最多能删多少个数字。 数据N,K<=100 直接上代码,不用解释。 #include<iostream> #include<algorithm> #include<cstdio> #include<stdlib.h> #include<iostream> #include<algori

矮纸斜行闲作草 394
上一篇: Codeforces Round #490 (Div. 3)B. Reversing Encryption
下一篇: Codeforces Round #491 (Div. 2)A. If at first you don't succeed...
图南1204
博客等级 码龄9年 21粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值