MEX有关的学习

news/2024/12/2 23:57:41/

MEX是一段区间内未出现的最小正整数。

所以向该区间加一个数只有加入该区间的mex值时才能增加;

我们来看两个题目

Problem - C - Codeforcesicon-default.png?t=M5H6https://codeforces.com/contest/1699/problem/C首先我们可以思考一个区间【L,R】的mex是x,说明【0,x-1】肯定都出现过了,所以如果x的位置在该区间内部则可以在区间内任意一个未被使用的位置,如果不在该区间内就只能在那个位置不动了,因为x一旦动那么该序列的mex值肯定会受到影响。

int a[MAXN];
int pos[MAXN];
const int mod = 1e9 + 7;
void solve() {int n;ll ans = 1;scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", a + i);pos[a[i]] = i;}int mx = -INF, mn = INF;for (int i = 0; i < n; i++) {if (pos[i] > mn && pos[i] < mx) {ans *= (mx - mn + 1 - i);ans %= mod;}mn = min(mn, pos[i]);mx = max(mx, pos[i]);}printf("%lld\n", ans);
}

 Problem - C - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/contest/1629/problem/C

然后是这一题 需要求我们能得出得最大字典序序列,所以我们b序列中得到得元素肯定是能选到得最大得mex,所以我们可以维护一个前缀mex和后缀mex,当我们的前缀mex此时等于最大的mex时候就可以加入答案数组,然后直接从下一点开始把mex值替换成后缀mex的值

struct MEX {int cot[MAXN];vector<int> res;int id = 0;void add(int x) {cot[x]++;res.push_back(x);}int mex() {while (cot[id])id++;return id;}void clear() {for (int v : res) {cot[v]--;}id = 0;res.clear();}
};
MEX now, t;
int a[MAXN];
int last[MAXN];void solve() {now.clear();t.clear();int n;scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", a + i);}for (int i = n; i >= 1; i--) {t.add(a[i]);last[i] = t.mex();}vector<int> ans;int mx = last[1];for (int i = 1; i <= n; i++) {now.add(a[i]);if (mx == now.mex()) {ans.push_back(mx);mx = last[i + 1];now.clear();}}printf("%d\n", ans.size());for (int v : ans) {printf("%d ", v);}putchar('\n');
}


http://www.ppmy.cn/news/262117.html

相关文章

mio-emio 接口

在玩了zedboard一段时间之后&#xff0c;这两天又回到了最基础的gpio,axi_gpio,mio,emio.也把ug585的部分章节&#xff0c;看了看&#xff0c;又有了许多新的发现&#xff0c;可能学习就是这样吧&#xff0c;温故而知新&#xff0c;说不定下一次在回过头来看mio的时候&#xff…

UTXO详解

UTXO详解 https://blog.csdn.net/ztemt_sw2?t1 https://blog.csdn.net/yzpbright/article/details/82218759 比特币交易中的基础构建单元是交易输出。 交易输出是比特币不可分割的基本组合&#xff0c;记录在区块上&#xff0c;并被整个网络识别为有效。 比特币完整节点跟踪…

QMIX

文章目录 Net_StructureTipsconstraint Net_Structure Tips 参考文献 we can learn a fully centralised stateaction value function Q_tot and then use it to guide the optimisation of decentralised policies in an actor-critic frameworkQMIX consists of agent netw…

utxo 是什么

UTXO 代表 Unspent Transaction Output。 在比特币社区里&#xff0c;Transaction 被简称为 TX&#xff0c;所以上面这个短语缩写为 UTXO。一般会认为 UTXO 是比特币区块链设计当中的一部分&#xff0c;但事实上 UTXO 和区块链没有必然的联系&#xff0c;你可以完全照搬比特币区…

Mbox

Mobx Mobx是一个功能强大&#xff0c;上手非常容易的状态管理工具。redux的作者也曾经向大家推荐过它&#xff0c;在不少情况下可以使用Mobx来替代掉redux。 这张图来自于官网&#xff0c;把这张图理解清楚了。基本上对于mobx的理解就算入门了。 官网有明确的核心概念使用方法…

mexFunction

mexFunction 在使用MATLAB编译C/C代码时&#xff0c;C/C代码中要使用一个mexFunction函数&#xff0c;那么这个函数是如何定义&#xff0c;在编译时又是如何实现的呢&#xff1f;下面我将使用实例进行说明。 如一个简单的函数&#xff1a; double add(double x, double y) { re…

UTXO介绍

什么是UTXO 在比特币钱包当中&#xff0c;我们通常能够看到账户余额&#xff0c;然而在中本聪设计的比特币系统中&#xff0c;并没有余额这个概念。“比特币余额”是由比特币钱包应用派生出来的产物。中本聪发明了UTXO交易模型&#xff0c;并将其应用到比特币当中。 UTXO&…

【UmiJS 3.x入门】

目录 1.定义 2.特点 3.搭建umi项目 4.路由分类 5.新建页面 6.页面跳转 7.路径传值 8.解析路径传值 9.请求接口 10.使用本地测试数据 11.使用umi项目自带的antd-mobile样式库 umi定位 插件化的企业前端应用框架 umi特点 可扩展&#xff1a;拥有完整的生命周期 开…