首页 > 其他分享 >并查集解mex_cf932_B. Informatics in MAC

并查集解mex_cf932_B. Informatics in MAC

时间:2024-03-06 19:22:37浏览次数:28  
标签:const 并查 int 区间 MAC 数组 Informatics mex define

目录

题目概述

原题参考:B. Informatics in MAC
给出一个长度为n的数组,问是否可以将其分为k个(k>1)mex相同的数组,如果可以的话,作出一种划分

思路想法

假设一个数组可以被分为k(k>2)个区间,每个区间的mex相同,那么可以确定的是,该数组中一定不存在mex这个数,假设存在mex,那么mex无论划分到任意区间,那么该区间的mex都不可能是mex;因此,我们可以知道数组中不存在mex元素,因此假如可以将数组划分为k(k>2)个区间,那么也可以将数组划分为2个区间,这两个区间的mex相同,那么只需要对数组分别正向和逆向求一遍mex即可
如何快速的求mex,已知mex是一段区间中未出现的最小正整数,也就是说,可以将该区间分为两部分(以上),也就是说,该区间是不连续的,求解连续性问题,很容易想到并查集,那么对于并查集的初始化就是每个点只能链接自己,当出现某一点时,可以知道,mex不可能是她,也就是说,他和下一位链接起来了,对于每次求当前区间的mex,只需要找到从0开始的最远的区间即可

参考代码

#include <bits/stdc++.h>
using namespace std;
#define FAST_IO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define endl '\n'
#define pll pair<long long, long long>
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<long long>
#define ll long long
#define ull unsigned long long
const ll INF = 9187201950435737471;
const int inf = 2139062143;
const ll mod = 1e9 + 7;
const double eps = 1e-6;
const double PI = acos(-1.0);
const int N = 2e5+7;
int n, a[N], mmax = 0;
struct DSU {
    int fa[N];
    DSU(int n) {for(int i=0; i<=n; i++) fa[i] = i;}
    void init(int n) {for(int i=0; i<=n; i++) fa[i] = i;}
    int find(int x) {
        if(fa[x] == x) return x;
        return fa[x] = find(fa[x]);
    }
};
void solve() {
    int lt[N], rt[N];
    cin >> n;
    for(int i=1; i<=n; i++) cin >> a[i], mmax = max(mmax, a[i]);
    DSU k(mmax+5);
    for(int i=1; i<=n; i++) {
        k.fa[a[i]] = k.find(a[i]+1);
        lt[i] = k.find(0);
    }
    k.init(mmax+5);
    for(int i=n; i; i--) {
        k.fa[a[i]] = k.find(a[i]+1);
        rt[i] = k.find(0);
    }
    int ans = -1;
    for(int i=1; i<=n-1; i++) {
        if(lt[i] == rt[i+1]) {
            ans = i;
            break;
        }
    }
    cout << (ans == -1 ? -1 : 2) << endl;
    if(ans != -1) cout << 1 << " " << ans << endl << ans+1 << " " << n << endl; 
}
int main() {
#ifdef xrl
    freopen("in.txt", "r", stdin), freopen("out.txt", "w", stdout);
#endif
    FAST_IO;
    int t = 1;
    cin >> t;
    while(t --) solve();
#ifdef xrl
    cout << "Time used = " << (double)(clock() * 1.0 / CLOCKS_PER_SEC) << "s";
#endif
    return 0;
}

做题反思

去接静态mex问题,可以使用并查集求解

标签:const,并查,int,区间,MAC,数组,Informatics,mex,define
From: https://www.cnblogs.com/notalking569/p/18057363

相关文章

  • CF1935E Distance Learning Courses in MAC
    CF1935EDistanceLearningCoursesinMAC题目大意给定\(n\)个变量\(z_i\in[x_i,y_i]\),你可以在范围内任意指定\(z_i\)的值。\(q\)次查询,每次查询给定区间\([l_i,r_i]\),求用这些变量得到的二进制或最大值。思路选择\(z\in[x,y]\),贡献分为两部分(1)\([x,y]\)的......
  • Mac电脑彻底删除 JetBrains 、Idea、pycharm 、webstrom、goland
    首先删除app删除缓存新版本cdUsers/xxx/Library/rm-rfLogs/JetBrains/IntelliJIdea202x.xrm-rfPreferences/com.jetbrains.intellij.plistrm-rfPreferences/com.jetbrains.jbr.java.plistrm-rfPreferences/jetbrains.jetprofile.asset.plistrm-rfApplicat......
  • 一类链式并查集问题
    链接:https://ac.nowcoder.com/acm/contest/69510/G来源:牛客网你在一个星球上,外星人amiloac想让你管理一条河流,该河流有\(x\)段,每两段之间有一个挡板隔开,每一段都有各自的颜色\(a\)。你需要管理\(q\)天,每一天你需要做以下的一种操作。\(1\l\r\)将第\(l\)至\(r\)段河流的所有未......
  • Mac终端安装Jupyter Notebook,配置环境变量及其相关知识(环境变量相关操作、编辑器、zsh
    目录1.Mac终端安装JupyterNotebook1.1先更新一下pip,然后安装JupyterNotebook1.2配置环境变量1.2.1找到Jupyter的安装位置1.2.2环境变量加到.zshrc2.相关知识2.1环境变量2.2编辑文件2.3zsh和bash2.4.zshrc(.bashrc)文件和.zprofile(.bash_profile)文件的区别1.Mac终......
  • Mac pro M3 笔记本 三指触控翻译失效
    1.问题:MacproM3笔记本三指触控翻译失效。期望功能效果如下:   2.设置    ......
  • macOS14使用brew下载Redis时出现的问题和解决方法
    当我使用brew下载redis时系统:macOS14(base)hanxuxian@hanxuxiandeMacBook-Air~%brewinstallredis报错信息:Error:git:unknownorunsupportedmacOSversion::dunnoError:'git'mustbeinstalledandinyourPATH!Warning:YouareusingmacOS14.Wedon......
  • OmniPlan Pro mac版:简单、智能,项目管理新选择!
    OmniPlanPro是一款功能强大的项目管理软件,它以其直观的用户界面和丰富的功能,帮助用户轻松管理各种复杂的项目。无论是个人任务还是团队协作,OmniPlanPro都能提供全面的解决方案,让项目管理变得更加简单高效。→→↓↓载OmniPlanPro首先,OmniPlanPro拥有强大的任务管理功能。用......
  • 奥特曼净资产破20亿美元;苹果计划通过线上渠道发布 2024 款 iPad 和 Mac丨 RTE 开发者
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • 清空Mac启动桌面的图标
    如果有文件夹需要留一个图标A,把其他图标删除后,会剩余空文件夹。把留下来的图标A拖进文件夹再拖出来,空文件夹就自动删除了。最后再把图标全部删除。 #getconfDARWIN_USER_DIRcd`getconfDARWIN_USER_DIR`com.apple.dock.launchpad/dbif[-z"$1"];thenecho"\033[1......
  • 在 macOS 上编译 LaTeX 文件
    安装MacTeX:brewinstall--caskmactex之后,在终端中进入你要编译的.tex文件所在的目录,执行如下命令:pdflatexyourfile.tex将yourfile.tex换成你要编译的文件的名字。即可编译出你需要的PDF文件。如果你想要在编写.tex文件的同时预览PDF文件:打开VisualStud......