Codeforces Round #762 (Div. 3) E. MEX and Increments

news2025/1/19 11:15:49

https://codeforces.com/contest/1619/problem/E 

翻译:

Dmitry有一个𝑛非负整数数组𝑎1,𝑎2,…,𝑎𝑛。

在一次操作中,Dmitry可以选择任意索引𝑗(1≤𝑗≤𝑛),并将元素𝑎𝑗的值增加1。他可以多次选择相同的索引𝑗。

对于从0到𝑛的每个𝑖,确定Dmitry是否可以使数组的MEX恰好等于𝑖。如果可能,那么确定最少的操作数。

数组的MEX等于数组中不存在的最小非负整数。例如,数组[3,1,0]的MEX值为2,数组[3,3,1,4]的MEX值为0。

输入
输入数据的第一行包含一个整数𝑡(1≤𝑡≤104)——输入中的测试用例的数量。

下面是测试用例的描述。

每个测试用例描述的第一行包含一个整数𝑛(1≤𝑛≤2⋅105)——数组𝑎的长度。

每个测试用例描述的第二行包含𝑛整数𝑎1,𝑎2,…,𝑎𝑛(0≤𝑎𝑖≤𝑛)-数组𝑎的元素。

可以保证测试中所有测试用例𝑛的值之和不超过2⋅105。

输出
对于每个测试用例,输出𝑛+1整数-𝑖-th number等于可以使数组MEX等于𝑖(0≤𝑖≤𝑛)的最小操作次数,如果不能这样做,则为-1。

例子
inputCopy
5
3.
0 1 3
7
0 1 2 3 4 3 2
4
3 0 0 0
7
4 6 2 3 5 0 5
5
4 0 1 0 4
outputCopy
1 10 10 -1
1 1 2 2 1 0 2 6
3 0 1 4 3
1 0 -1 -1 -1 -1 -1 -1 -1 -1
2 1 0 2 -1 -1
请注意
在第一组示例输入中,𝑛=3:

要得到MEX=0,执行一次增量就足够了:𝑎1++;
要得到MEX=1,执行一次增量就足够了:𝑎2++;
对于给定的数组,MEX=2,因此不需要执行增量;
通过执行增量不可能得到MEX=3。

思路:

MEX,我们很容易得到一个结论,如果前边比较小的数构不成的时候,那么后边都构不成,因为是未出现的i最小的非负整数,所以我们一旦有一个-1,那么后边就全是-1啦。

然后我们来分析一下,构成的条件是什么,比如说 5,那么它的前边至少要有一个0 1 2 3 4,4的构成条件是0 1 2 3,同理我们可以这样子往前推,直接到0,0的构成条件,只要没有0就好了对吧,所以0的花费就是0出现的个数,那么1呢,如果0不能构成那么1就直接是-1,所以我们直接讨论在前边可以构成的前提下,来构成现在的条件。

1的话,我们的花费也就是1的个数(因为已经在0被构成的前提下),接下来看2,2的话就是在有0 1的情况下加上2的个数,但是我们可能会有没有1 有两个0 的情况,那么我们就需要将一个0 变成1,然后加上2的个数,如果有一个0呢,那么我们就可以直接-1了。

同理,构成三需要2,如果比其小的是0 0 0,那么我们就需要将其变成 0 1 2,对吧,然后花费成本+3的个数,变成0 1 2,如果是3个0的时候,在前边2的情况下,我们就已经将其变成了 0 1 0,所以我们每次只需要在其成本上累加。有可能比其小的数不是0,我们需要将其变大,最小成本就是最大的数去变化,所以我们这里用优先队列优化,也可以用栈,因为我们从小到大,后进入的肯定是最大的,已经变化过的就要固定了,不能再变化pop掉,这思路就很清晰了。

嗲吗:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long  ll;
int n,t;
inline __int128 read(){
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}

int a[200005];
int w;
void solv(){
    cin>>n;
    map<int,ll>q;
    for (int i =1; i<=n; i++) {
        cin>>w;
        q[w]++;
    }
    bool flag=false;
    ll bl=0;
    priority_queue<int>ff;
    for (int i =0; i<=n; i++) {
        if (flag) {
            printf("-1 ");
        }
        else
        {
            printf("%lld ",bl+q[i]);
        }
        for (int j =0; j<q[i]; j++) {
            ff.push(i);
        }
        if (ff.empty()) {
            flag=true;
        }
        else{
            bl+=i-ff.top();
            ff.pop();
        }
    }
    printf("\n");
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>t;
    while (t--) {
        solv();
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP ABAP——数据类型(六)【预定义基本数据类型详解】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

编译robotics_transformer

编译tensor2robot GitHub - google-research/tensor2robot: Distributed machine learning infrastructure for large-scale robotics research 2.编译proto文件为python文件 robotrobot:~/ref$ mkdir protoc_3.3 robotrobot:~/ref$ cd protoc_3.3/ robotrobot:~/ref/protoc…

三、HTTP 接口自动化测试

HTTP 接口自动化测试3.1 HttpLibrary.HTTP 库的使用安装导入3.1.1 Create Http Context3.2 RequestsLibrary 库的使用安装导入3.2.1 Create Session 和 Get Request1. Create Session2. Get Request3.2.2 Post Request3.2.3 RequestsLibrary 库的其他关键字3.3 RESTinstance 库…

RK3568平台开发系列讲解(摄像头篇)使用 Camera 的步骤

🚀返回专栏总目录 文章目录 一、使用 Camera 的步骤二、使用 SurfaceView 预览显示 Camera 数据沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍如何使用Camera。 一、使用 Camera 的步骤 说下 Camera 的操作步骤,后面给出实例,请结合代码理解分析: 获…

[附源码]Python计算机毕业设计高校体侧管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Jetpack Compose中的Modifier

Modifier的基本使用 Modifier修饰符是Jetpack Compose中用来修饰组件的&#xff0c;提供常用的属性&#xff0c;写布局时几乎所有Composable组件的大部分属性都可以用Modifier 来修饰。官方在开发Compose UI时&#xff0c;最初尝试过将所有属性全部以函数参数的形式提供&#…

[附源码]Node.js计算机毕业设计高校学生宿舍管理信息系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

10.Django大型电商项目之商品详情页——如何从数据库中获取图片地址显示图片在前端中

1.商品详情页 1.1 先搭建好基础框架 首先&#xff0c;我们应该修改跳转的点击路由在index.html中 <div class"goods-model"><div class"goods-content">{% for goods in goods_page %}<div class"good"><a href"/g…

计算机毕业设计django基于python爬虫系统

项目介绍 随着计算机多媒体技术的发展和网络的普及。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的爬虫系统的平台,这样可以有效地解决数据获取系统混乱的局面。 本文首先介绍了爬虫系统的发展背景与发展现状,然后遵…

谷歌浏览器是最容易受到攻击的

©网络研究院 不幸的是&#xff0c;那些看起来越多&#xff0c;他们发现的越多&#xff0c;这个规则总是适用的&#xff0c;除了来自体育场的无节制的欢呼声。 Windows 比 Linux 更容易受到攻击&#xff0c;因为 Chrome 比 Edge 更容易受到攻击。这也是因为它们是最受欢迎…

【大数据技术Hadoop+Spark】MapReduce之单词计数和倒排索引实战(附源码和数据集 超详细)

源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、统计单词出现次数 单词计数是最简单也是最能体现MapReduce思想的程序之一&#xff0c;可以称为MapReduce版“Hello World。其主要功能是统计一系列文本文件中每个单词出现的次数 程序解析 首先MapReduce将文件拆分成spli…

你的代码会说话吗?(下)

篇首语 代码不讲真话的直接后果是所有人被误导了&#xff0c;然后做了一件错误的事情&#xff0c;不自知地将错就错&#xff0c;让错误越陷越深&#xff0c;最后浪费宝贵的时间。可不讲真话&#xff0c;编写代码的人又不是故意的&#xff0c;也万万不可上纲上线&#xff0c;袁…

力扣(LeetCode)1785. 构成特定和需要添加的最少元素(C++)

贪心 统计所有元素的加和 sumsumsum &#xff0c;计算 sumsumsum 到 goalgoalgoal 的距离&#xff0c;尽可能用 limitlimitlimit 的步长去走这段距离(贪心)&#xff0c;最后一步可能是 111 ~ limitlimitlimit 。 CCC 的除法是向 000 取整&#xff0c;为了统计最后一步&#xf…

深入理解网络编程精华

hi 大家好&#xff0c;我是大师兄&#xff0c;让我们一起来学习一下网络编程&#xff0c;对网络编程的核心知识进行梳理&#xff0c;希望大家早日掌握这些核心知识&#xff0c;打造自己坚实的基础。详细点击查看-> 极客星球。以上是深入理解网络编程部分ppt。感兴趣的同学可…

phoenix使用注意事项

使用phoenix的版本是5.0.0-HBase-2.0&#xff0c;DBeaver的版本是21.3(7.1.5版本也试过可以) 用DBeaver连接出现的问题处理 1.需要把已安装hbase服务器/opt/hbase/lib目录下的jar包全部下载来 1.1 常规配置 1.2 DBeaver编辑驱动把原来的库给删除掉&#xff0c;加入下载下来的…

MacOS Monterey 12.6.2 (21G320) OC 0.8.7 / Cl 5150 / PE 三分区原版黑苹果镜像

1‌2月14日苹果推送了 Ventura 13.1更新&#xff0c;解决了从图形驱动程序到 WebKit 到内核的一些问题&#xff0c;以及 Safari、天气、照片等方面的 Bug。对于无法更新到 Ventura 的用户可以安装 macOS Monterey 12.6.2 或 macOS Big Sur 11.7.2&#xff0c;以获得针对某些漏洞…

【AI with ML】第 7 章 :用于自然语言处理的递归神经网络

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Java+MySQL共享单车管理系统的设计与实现

随着时代的发展&#xff0c;我国的国民经济一直在稳步的提升&#xff0c;共享单车的是用来一直在不断的攀升&#xff0c;为了能够更加方便快捷的管理共享单车&#xff0c;需要开发一套利用计算机进行管理的JSP共享单车管理系统。 本项目利用软件工程原理&#xff0c;采用面向对…

先聊聊「内存分配」,再聊聊Go的「逃逸分析」。

前言 大家好&#xff0c;我是阳哥。 今天和大家聊聊Go语言的「内存分配」和「逃逸分析」。 这期内容不仅有文档&#xff0c;而且有视频&#xff1a; # Go语言的内存分配和逃逸分析-理论篇 # Go语言的内存分配和逃逸分析-实践总结篇 要搞清楚GO的逃逸分析一定要先搞清楚内…

数据处理指令(二)—— 数据运算指令(加减乘)+ 逻辑运算指令(与或)+ 位清零(BIC)

无论是数据运算还是逻辑运算&#xff0c;需要满足如下格式&#xff1a; <操作码> <目标寄存器> <第一操作寄存器> <第二操作数> 操作码&#xff1a; 表示执行哪种操作&#xff08;加减乘&#xff09;目标寄存器&#xff1a; 用…