zoukankan      html  css  js  c++  java
  • 修改数组蓝桥杯

    思想:并查集

    注意:有2个地方要用到 并查集 不然会时间超时;

    代码:(可能有错误)

    #include <bits/stdc++.h>
    using namespace std;
    #define ri register int
    #define M 2000005
    ///// attention M
    int n;
    int flag[M];
    int fa[M];
    int p[M];
    
    int find(int a)
    {
        if(!flag[a]) {
            return a;
        }
        if(fa[a]) fa[a]=find(fa[a]);
        else 
        fa[a]=find(a+1);
        return fa[a];
        
    }
    int read()
    {
        int x=0,f=1;
        char ch;
        while(ch<'0'||ch>'9')  {if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return f*x;
    }
    
    int find2(int a)
    {
        
               int b=a;
                if(!fa[a])
               {
                 find(a);
                 flag[fa[a]]=1;
                 fa[b]=fa[a];
                 return fa[b];
               }                         
               else{
                 a=fa[a]+1;
                 if(!flag[a])
                 {
                  fa[b]=a;
                  flag[a]=1;
                  return fa[b];
                 }
                 fa[b]=find2(a);
                 return fa[b];
              }  
            
    } 
    int main(){
        
        scanf("%d",&n);
        for(ri i=1;i<=n;i++)
        p[i]=read();
        
        flag[p[1]]=1;
        
        for(ri i=2;i<=n;i++)
        {
            if(!flag[p[i]])
            {
                flag[p[i]]=1;
                continue;
            }
             int a=p[i];
             fa[a]=find2(a); 
             p[i]=fa[a];
        }
        for(ri i=1;i<=n;i++)
        printf("%d ",p[i]);
        return 0;
        
    }
     
    View Code

    注意: 数组开的大小。

  • 相关阅读:
    Angular
    linux mysql 5.7.25 安裝
    J2CACHE 两级缓存框架
    MYSQL 事务测试
    安装配置ftp服务器
    使用docker 安装 GITLIB
    Elastic serarch 安装
    centos firewalld 基本操作【转】
    KAFKA 监控管理界面 KAFKA EAGLE 安装
    redis 的一主二从三哨兵模式
  • 原文地址:https://www.cnblogs.com/Lamboofhome/p/15613006.html
Copyright © 2011-2022 走看看