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]<<" ";
}
车联网ECU、TSP与TBOX通信流程 对比维度ECU(电子控制单元)BMS(电池管理系统)应用场景传统燃油车 + 新能源汽车仅限新能源汽车核心作用控制整车各系统运行管理动力电池安全与寿命车联网角色数据采集与传输的核心载体提供电池相关的核心数据。 阅读详情

相关推荐

CAPL 中的变量类型详解与应用

CAPL 中的变量类型详解与应用

qq_42268594的博客 1448

基础数据结构——数组

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

m0_52711790的博客 840

Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现

本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。

weixin_29189381的博客 413

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

RenderDoc实战:5分钟搞定安卓Vulkan应用抓帧(含常见连接失败排查)

本文详细介绍了如何使用RenderDoc工具对安卓Vulkan应用进行抓帧分析,包括环境配置、完整抓帧流程及常见连接问题的解决方案。通过实战案例和高级技巧,帮助开发者快速定位渲染问题和性能瓶颈,提升移动图形开发效率。

weixin_28318011的博客 282

手把手教你用LTspice仿真BUCK-BOOST电路(附波形分析)

本文详细介绍了如何使用LTspice进行BUCK-BOOST电路的仿真与波形分析,涵盖电路原理、CCM与DCM模式特性、效率优化及常见问题解决方案。通过实战案例,帮助工程师快速掌握升降压转换电路的设计与调试技巧,提升电力电子设计能力。

julia4scientist的博客 1048

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

【UE5】虚幻引擎Gameplay框架

游戏实例(UGameInstance)会在引擎启动时实例化,并保持活跃直至引擎关闭。这是一种管理器类,在游戏中不存在实体,但会追踪数据和运行代码。在联网多人游戏中,游戏实例不会被复制,而是独立存在于服务器以及所有互联的客户端上。所有你希望在关卡加载间保持的内容都应存于游戏实例中。例如,游戏实例是管理游戏保存系统的到地方。游戏实例还可以充当任意数量的 游戏实例子系统 的管理器,这些子系统由游戏实例创建和销毁,并且与游戏实例本身具有相同的生命周期。在线子系统就属于这类子系统。

一个写程序的 1795

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

论文阅读:2024 ACM CCS “Do Anything Now”: Characterizing and Evaluating In-The-Wild Jailbreak Prompts on

大语言模型(LLMs)的滥用问题引起了公众和大语言模型供应商的高度关注。有一种特殊的对抗性提示,叫做越狱提示,它已成为绕过防护措施、让大语言模型生成有害内容的主要攻击手段。在这篇论文中,作者使用新框架JailbreakHub,对2022年12月至2023年12月期间的1405个越狱提示进行了全面分析。作者识别出131个越狱提示社区,发现了越狱提示的独特特征以及主要攻击策略,比如提示注入和权限提升。

CSPhD-winston的博客 1413

Y-Branch and a closed y-branch loop

双臂后面的区域,我们将它的双臂使用一个波导进行了连接,使得它本身形成了一个闭合回路,因此,该结构被称作。它们均是用来对经过它们的光束能量进行分割的一种器件。首先,我们知道一点,在光波导层面,今天给大家介绍一下,什么是。

u011699626的博客 630

D. Equalize Them All

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

m0_60610120的博客 322

青岛鼎信Java开发面试题及参考答案(3万字长文,多张原理图)

MySQL 的事务特性有哪些? MySQL 事务具有四个重要特性,被称为 ACID 特性。 原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么全部执行,要么全部不执行。例如,在银行转账场景中,从账户 A 转账到账户 B,包括扣减账户 A 的金额和增加账户 B 的金额这两个操作必须作为一个整体来完成。如果在执行过程中发生错误,比如系统崩溃或者数据库出现故障,那么已经执行的部分必须全部回滚,就好像整个转账操作从未发生过一样。 一致性(Consistency):事务必须

大模型大数据攻城狮的专栏 1089

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

余额充值