首页 > 其他分享 >abc330E 单点更新后的Mex

abc330E 单点更新后的Mex

时间:2024-03-08 22:14:17浏览次数:27  
标签:map set 单点 abc330E rep long int Mex

题面:给定长为n的数组A,有q组询问,每次将A[i]修改为x[i],输出每次修改后A的mex值。
范围:n,q<2E5; A[i],x[i]<1E9

思路:注意到,长度为n的数组,其mex值最大为n。因此,用set维护0~n中没有出现在A中的数,同时用map维护A中各数的现次数。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a; i<=b; i++)
#define per(i,a,b) for(int i=b; i>=a; i--)

const int N = 200005;
int n, q, A[N];
set<int> nouse;
map<int,int> cnt;
void solve() {
    cin >> n >> q;
    rep(i,0,n) nouse.insert(i);
    rep(i,1,n) {
        cin >> A[i];
        if (A[i] <= n) {
            cnt[A[i]] += 1;
            nouse.erase(A[i]);
        }
    }
    auto del = [&](int x) {
        cnt[x] -= 1;
        if (cnt[x] == 0) {
            nouse.insert(x);
        }
    };
    auto add = [&](int x) {
        if (cnt[x] == 0) {
            nouse.erase(x);
        }
        cnt[x] += 1;
    };
    while (q--) {
        int i, x;
        cin >> i >> x;
        del(A[i]);
        add(x);
        A[i] = x;
        cout << *nouse.begin() << "\n";
    }
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:map,set,单点,abc330E,rep,long,int,Mex
From: https://www.cnblogs.com/chenfy27/p/18061946

相关文章

  • 并查集解mex_cf932_B. Informatics in MAC
    目录题目概述思路想法参考代码做题反思题目概述原题参考:B.InformaticsinMAC给出一个长度为n的数组,问是否可以将其分为k个(k>1)mex相同的数组,如果可以的话,作出一种划分思路想法假设一个数组可以被分为k(k>2)个区间,每个区间的mex相同,那么可以确定的是,该数组中一定不存在mex这......
  • SSO单点登录
     1.单点登录单点登录(SingleSign-On,简称SSO) ,允许用户使用一组凭据(如用户名和密码)登录到多个相关但独立的软件系统或应用程序中。是指在多系统应用群中,登录一个系统,便可在其他所有系统中得到授权而无需再次登录。包括单点登录与单点注销两部分。简而言之,多个系统,统一......
  • windows server 2019/2022安装WSUS更新服务器配置System.Runtime.InteropServices.COM
    现象: 2024-02-1814:41:10Postinstallstarted2024-02-1814:41:10Detectedroleservices:Api,UI,WidDatabase,Services2024-02-1814:41:10Start:LoadSettingsFromXml2024-02-1814:41:10Start:GetConfigValuewithfilename=UpdateServices-Services.xmlit......
  • CF1905D Cyclic MEX 题解
    题意:给定一个长度为\(n\)的排列\(a\),\(a_i\in[0,n-1]\)。你可以将这个排列进行循环移位,最小化\(\sum_{i=1}^{n}\text{mex}_{j=1}^ia_j\)的值。首先我们可以先计算出最初情况下每一个\(i\)位置的\(\text{mex}\)值。这个序列一定是单调非严格递增的。首先有一个比......
  • CF739A Alyona and mex 题解
    题目简单构造,首先我们知道一个区间\([l,r]\)内的最大答案为为这个区间的长度\(len\),因为其中可以包括\([0,r-l+1]\)这些数。所以\(ans=min(len_i)\)。考虑如何满足这个条件,设最小长度为\(len_{min}\),我们可以轮流输出\([0,len_{min}]\),因为\(len_{min}\)是最小长度,所......
  • Blazor OIDC 单点登录授权实例5 - 独立SSR App (net8 webapp ) 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorOIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorOIDC单点登录授权实例2-登录信息组件wasmBlazorOIDC单点登录授权实例3-服务端管理组件BlazorOIDC单点登录授权实......
  • 单点登录怎么做?SSO实现原理和优势总结
    前言大家好,我是chowley,我最近在总结之前的项目,其中登陆模块我用了目前主流的SSO,今天就来总结一下,我对单点登录的理解,也欢迎大家讨论和指点。单点登录在当今互联网应用中,用户经常需要同时访问多个相关但相互独立的系统或应用程序。为了简化用户的登录体验、提高安全性和降低管理......
  • redmine获取cookie和其他系统实现单点登录
    前言最近有个需求,需要将我们一个平台对接到redmine,让用户可以通过这个平台直接在redmine提工单,需要实现免登录跳转。首先是想到去查redmine有无相应的单点登录功能,查到redmine是有LDAP认证功能的,解决方案LDAP认证Redmine支持通过LDAP(轻量级目录访问协议)实现用户认证,这使......
  • 极小mex
    称\([l,r]\)是极小区间,当且仅当不存在\([L,R]\subsetneq[l,r],\mbox{mex}(l,r)=\mbox{mex}(L,R)\)。则有结论:极小区间只有\(O(n)\)个。证明:考虑极小区间\([l,r]\),则\(a_l\neqa_r\),设\(a_l>a_r\),由于删掉端点\(\mbox{mex}\)会变化,所以\(\mbox{mex}(l,r)>a_l\),对于\(r_1>r\),若\(a_......
  • CAS单点登录原理解析
    前段时间时间需要和其他项目做cas集成,于是乎在网上找了几篇教程看了一下,好了,很简单,学会了,开搞(自以为研究明白)。集成完事了,登录成功了,自以为这就过去了。然而,没过几天就出bug了,这下惨了,当初没有好好学出了问题都不知道咋解决。无奈,只得静下心来好好学习一番(当初太懒付出的代价)。......