蓝桥杯真题:修改数组

2023-11-04

 

1.暴力思路

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define N 1000005
int exist[N]={0};
int main()
{
  // 请在此输入您的代码
  int n;
  cin>>n;
  vector<int> arr(n,0);
  for(int i=0;i<n;++i)
  {
    int x;
    cin>>x;
    while(exist[x]==1) ++x;
    exist[x]=1;
    arr.push_back(x);
  }
  for(int &x:arr)
  {
    cout<<x<<" ";
  }
  return 0;
}

2.并查集

#include<bits/stdc++.h>
using namespace std;
const int N=2*1e6+5;
vector<int> father(N,-1); 
int find_father(int x){
    while(father[x]!=-1){
        x=father[x];
    }
    return x;
}
void Union(int a,int b){
    int roota=find_father(a);
    int rootb=find_father(b);
    if(roota!=rootb)
        father[roota]=rootb;
}
int main()
{
    int n;
    cin>>n;
    vector<int> arr(n,0);
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        arr[i]=find_father(x);
        Union(arr[i],arr[i]+1);
    }
    for(int i=0;i<n;i++){
        cout<<arr[i]<<" ";
    }
    return 0;
}

不过都超过时间限制了,可能还要优化一下并查集啥的

例如在查找的过程中直接把父节点指向最后的那个:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int Max = 1000010;

int f[Max];
int N;
int getf(int n)
{
    if(f[n] == 0)
        return n;
    return  f[n] = getf(f[n]+1);
}


int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> N;
    int d;
    for(int i = 1; i <= N; ++i)
    {
        cin >> d;
        int fd = getf(d);
        cout << fd << " ";
        f[d] = fd;
        f[fd] = fd;  // 这句不能漏掉,否则不能跳过已经使用过的数字
    }

    return 0;
}

这样就AC了,感谢众大佬教我写题~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯真题:修改数组 的相关文章

  • 高校软件工程期末复习——ICONIX

    ch01 软件工程危机 定义 软件在开发和维护过程中遇到的一系列严重的问题 含义 如何开发软件 如何维护数量不断膨胀的已有软件 原因 客户对软件需求的描述不精确 可能有遗漏 有二义性 有错误 在软件开发过程中 用户提出修改软件功能 界面 支
  • Cookie和Session是什么?它们的区别是什么?

    什么是Cookie Cookie实际上是一小段的文本信息 客户端请求服务器 如果服务器需要记录该用户状态 就使用response向客户端浏览器颁发一个Cookie 客户端会把Cookie保存起来 当浏览器再请求该网站时 浏览器把请求的网址连

随机推荐

  • 谷歌浏览器报错:NET::ERR_CERT_AUTHORITY_INVALID

    chrome net internals hsts
  • Vivado使用心得(六)Vivado ILA观察信号和调试过程

    先简单介绍一下ILA Integrated Logic Analyzer 生成方法 这里有两种办法完成Debug Core的配置和实现 方法一 mark debug综合选项 Set Up Debug设定ILA参数 1 在信号 reg或者wi
  • MV-YOLO翻译(2018年5月 CVPR论文)【原创】

    声明 作者翻译论文仅为学习 如有侵权请联系作者删除博文 谢谢 另 如有不当的地方 请各位大佬批评指正 谢谢 MV YOLO 通过语义目标检测实现运动矢量跟踪 原论文pdf下载地址 https arxiv org pdf 1805 00107
  • office2010 错误1706 解决办法

    office2010 错误1706 解决办法 问题描述 1 弹窗 无限弹窗 无限 困扰了我大概半年的问题 自从上次不小心删掉一些有关office2010的东西 导致网页中下载东西后总是弹窗 office2010 卸载出现 安装程序找不到Pr
  • 以太坊微支付通道原理与实现

    以太坊微支付通道原理与实现 线上直接转账需要一定的费用 如果存在大量小额交易的情况下 费用会变的难以承受 因而以太坊引入了微交易支付通道来解决这个问题 以太坊提供了一个票据支付方案 主要依赖于智能合约实现的一对多的账单系统 该账单系统大致上
  • 【超级无敌详细的韩顺平java笔记】从入门到精通---基本数据类型的转换

    1 自动类型转换 当Java程序在进行赋值或运算时 精度小的类型自动转换为精度大的数据类型 这个就是自动类型转换 数据类型按照精度 容量 大小排序为 注意和细节 1 有多种类型的数据混合运算时 系统首先自动将所有数据转换成容量最大的那种数据
  • kafka 配置部署

    本文以部署三台kafka broker 为例讲解 kafka版本为 kafka 2 9 2 0 8 1 1 运行环境为centos jdk版本为1 7以上 kafka依赖zookeeper 部署之前部署好zookeeper集群 1 获取ka
  • Linux中操作sqlite3、sqlite3数据c/c++接口编程与Windows和Linux中sqlite3库的制作(SQLite二)

    目录 一 linux操作sqlite3 1 可以像window下通过qtcreator编译 2 可以用gcc直接编译 1 要安装libreadline dev 2 在工程文件中添加 3 打开shell c 在最前面添加一行代码 3 直接用U
  • .net线程同步

    大家都晓得 NET中线程同步有以下几种方式 临界区 Critical Section 互斥量 Mutex 信号量 Semaphore 事件 Event 1 临界区 通过对多线程的串行化来访问公共资源或一段代码 速度快 适合控制数据访问 在任
  • element-ui的表单验证及自定义验证规则

    element ui是一个组件库 里面有很多项大家都会用到 其中的表单项验证时比较常用的 比如我们一个登录界面有以下的要求 手机号 必填 11位移动手机号 验证码 必填 6位数字 协议 必须勾选
  • 【NoteExpress】技巧与Error解决方案

    Error 插入文献出现 OLE error 800A01A8错 错误原因 未在源word wps文件插入文献时报错 解决方案 检查是否在源word wps文件中进行操作 点击 去除格式化 分别进行去除格式化 清除域代码操作 导入文献 出现
  • Java连接数据库(二):数据库连接池(druid)

    背景 每次使用SQL语句操作数据库的时候都需要创建一个与数据库的连接 使用完之后再把这个连接销毁掉 这种频繁创建与销毁比较耗费机器的性能跟资源 也没有太大意义 数据库连接可以解决该问题 备注 建立一个数据库连接是一件非常耗时 消耗时间 耗力
  • vue获取上传文件路径_VUE上传文件夹的三种解决方案

    1 背景 用户本地有一份txt或者csv文件 无论是从业务数据库导出 还是其他途径获取 当需要使用蚂蚁的大数据分析工具进行数据加工 挖掘和共创应用的时候 首先要将本地文件上传至ODPS 普通的小文件通过浏览器上传至服务器 做一层中转便可以实
  • 详解Arduino Uno开发板的引脚分配图及定义

    详解Arduino Uno开发板的引脚分配图及定义 在本篇文章中 我们将详细介绍Arduino开发板的硬件电路部分 具体来说 就是介绍Arduino Uno开发板的引脚分配图及定义 Arduino Uno微控制器采用的是Atmel的ATme
  • 【论文阅读】Learning Efficient Convolutional Networks through Network Slimming

    1 论文和代码 https arxiv org abs 1708 06519 https github com Eric mingjie network slimming 1 摘要 深度卷积神经网络 CNNs 在许多现实应用中的部署很大程度
  • 深入理解STL库

    关注本人公众号 获取更多学习资料 微信公众号搜索 阿Q正砖 上期说过C 这块面试问的东西也蛮多 简历上只要出现C 这几个字 那么STL库就是必问 总不能是面试官问你了解STL库吗 你尴尬的说这块不怎么熟悉 那这就 总的来说STL库这块也不是
  • Data modeling essentials

    数据库设计才是王道 1 Introduction 2 Normalization 3 ER图 4 Subtypes and Supertypes 5 Attributes and columns 6 Primary key 7 Extent
  • Java集合大总结——Collection集合

    Collection集合的整理 1 List Set Queue Map四者的区别 集合底层数据结构梳理 2 关于集合的的选用 2 1 为什么使用集合 3 List接口 3 1 ArrayList 和 Array 数组 的区别 3 1 Li
  • ubuntu20.04 pycharm 中文输入法冲突 无法输入中文

    升级了ubuntu20之后 全家桶装完 发觉pycharm总是卡死 无法关闭 只能重启 最后发觉是因为搜狗输入法的原因 没找到什么很好的解决方法 只能删除搜狗输入法 但是又出现了新的问题 ibus无法输入中文 每次只能输入三个中文 裂开 在
  • 蓝桥杯真题:修改数组

    1 暴力思路 include