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]<<" ";
}
阻抗匹配详解 在深入理解阻抗匹配概念之前,我们可以先来一起看一个现象,首先使用一个信号发生器输出一个脉宽为 50ns 的单脉冲信号,同时将信号接入示波器,此时在示波器的波形视图上可以看到这个仅有一个脉冲的信号,如下图。如果我们将信号接入示波器的同时将电缆延长数米到外部,并且延长后电缆末端保持悬空不接入任何东西,引出一段未接入任何东西的开路电缆,按照常识应该没有任何影响,然而实测是在原有脉冲旁边多出了一个类似脉冲,如下图。 阅读详情

相关推荐

深入解析DisplayPort(DP)接口:从主链路到辅助通道的全方位技术剖析

本文深入解析DisplayPort(DP)接口的核心技术架构,重点剖析了其三大功能模块:承载视频/音频数据洪流的Main-Link主链路、负责链路训练与设备控制的AUX CH辅助通道,以及实现智能交互的HPD热插拔检测。文章详细阐述了主链路的可伸缩Lane配置、嵌入式时钟与数据成帧机制,以及辅助通道在设备发现、动态优化信号质量(链路训练)中的关键作用,揭示了DP接口实现高效率与灵活性的设计哲学。

weixin_29267307的博客 489

基础数据结构——数组

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

m0_52711790的博客 840

linux下wayland协议修改键盘映射

linux下wayland协议,修改键盘映射,实验环境是Ubuntu24,其他wayland协议窗口应该也是可以的。

qq_15027967的博客 1068

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

Unity 第一人称视角控制移动、旋转

第一人称视角操作此功能主要是借鉴YouTube,写的蛮好我就搬运过来让大家也试试。

qq_36515472的博客 4202

TC397 EB MCAL开发从0开始系列 之 [13.1] Dma配置实战 -实现M2M数据传输(读存储写存储)

TC3XX TC397 MCAL DMA 从0搭建测试用例-实现M2M 存储到存储数据传输

yy九歌的博客 1914

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

YOLOV12进阶:MSDA多尺度空洞注意力机制解析与实战,突破检测尺度瓶颈

在目标检测中,“尺度差异”是个老大难问题——大目标占据画面大半,小目标可能只有几个像素,普通模型很难同时精准检测。而MSDA(Multi-Scale Dilated Attention,多尺度空洞注意力)就像给模型配备了“变焦眼镜”,能同时关注不同尺度的目标,让YOLOV12在大、中、小目标检测上都能表现出色。这篇教程会带你从原理到实操,掌握这个强大的注意力机制,让你的检测模型真正“通吃”各种尺度的目标。MSDA的“多尺度空洞注意力”设计,是目标检测突破尺度瓶颈的关键一步。

know_F0727的博客 263

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

【UG\NX二次开发】多个带ui的dll怎么整合到一个dll

NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。有大佬知道多个带ui的dll怎么整合到一个dll吗。

王牌飞行员_里海的博客 284

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

D. Equalize Them All

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

m0_60610120的博客 322

STM32cubemx配置驱动DHT11模块

本篇文章将带大家学习使用DHT11湿温度模块,使用这个模块可以获取当前的温度和湿度数据。DHT11可以用于智能家居,蔬菜大棚等项目当中适用范围广。DHT11 是一种数字式温湿度传感器,由杜邦公司推出。它可以测量环境中的温度和湿度,并将测量结果以数字形式传输给微控制器或其他电子设备,适用于通过数字信号读取环境温湿度的应用场景。DHT11 传感器使用单总线数据交换协议,可以通过一个 I/O 引脚进行控制和数据传输。

m0_49476241的博客 5912

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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、付费专栏及课程。

余额充值