当前位置:网站首页>Mex related learning
Mex related learning
2022-07-06 07:42:00 【eva_ can(not)survive】
MEX Is the smallest positive integer that does not appear in an interval .
Therefore, adding a number to the interval is only for those who join the interval mex Value can be increased ;
Let's look at two topics
Problem - C - Codeforceshttps://codeforces.com/contest/1699/problem/C First of all, we can think about an interval 【L,R】 Of mex yes x, explain 【0,x-1】 It must have happened , So if x If the position of is inside the interval, it can be at any unused position in the interval , If you are not in this range, you can only stay in that position , because x Once moved, the sequence Column mex The value will definitely be affected .
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);
}
Then there is this question We need to find the largest lexicographic sequence we can get , So we b The element obtained in the sequence must be the largest one that can be selected mex, So we can maintain a prefix mex And suffixes mex, When our prefix mex This is equal to the maximum mex The answer array can be added when , Then start directly from the next point mex Replace value with suffix mex Value
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');
}
边栏推荐
- Description of octomap averagenodecolor function
- Force buckle day31
- Is the super browser a fingerprint browser? How to choose a good super browser?
- Le chemin du navigateur Edge obtient
- 2022年Instagram运营小技巧简单讲解
- leecode-C語言實現-15. 三數之和------思路待改進版
- octomap averageNodeColor函数说明
- [非线性控制理论]9_非线性控制理论串讲
- WebRTC系列-H.264预估码率计算
- 学go之路(一)go的基本介绍到第一个helloworld
猜你喜欢
[window] when the Microsoft Store is deleted locally, how to reinstall it in three steps
Basics of reptile - Scratch reptile
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
When the Jericho development board is powered on, you can open the NRF app with your mobile phone [article]
leecode-C语言实现-15. 三数之和------思路待改进版
解决方案:智慧工地智能巡检方案视频监控系统
[count] [combined number] value series
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
In the era of digital economy, how to ensure security?
How MySQL merges data
随机推荐
TS 体操 &(交叉运算) 和 接口的继承的区别
Simulation of Michelson interferometer based on MATLAB
学go之路(二)基本类型及变量、常量
word中把带有某个符号的行全部选中,更改为标题
After the hot update of uniapp, "mismatched versions may cause application exceptions" causes and Solutions
Solution: intelligent site intelligent inspection scheme video monitoring system
Word delete the contents in brackets
TS类型体操 之 字符串的妙用
WebRTC系列-H.264预估码率计算
Jerry's ad series MIDI function description [chapter]
Opencv learning notes 8 -- answer sheet recognition
Risk planning and identification of Oracle project management system
Fundamentals of C language 9: Functions
Scala language learning-08-abstract classes
Sharing of source code anti disclosure scheme under burning scenario
TS 类型体操 之 extends,Equal,Alike 使用场景和实现对比
Wonderful use of TS type gymnastics string
Linked list interview questions (Graphic explanation)
If Jerry's Bluetooth device wants to send data to the mobile phone, the mobile phone needs to open the notify channel first [article]
jmeter性能测试步骤实战教程