题解:AT_abc397_c [ABC397C] Variety Split Easy
liborui0000 · · 题解
题目大意:
有
因为是求不同元素的数量,所以我们要去重。而众所周知, 有一个叫
代码如下:
#include <bits/stdc++.h>
using namespace std;
int n;
int a[300010];
int l[300010], r[300010];
set<int> sl, sr;
int main(){
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++){
sl.insert(a[i]);
l[i] = sl.size();
}
for (int i = n; i >= 1; i--){//注意要从大到小循环
sr.insert(a[i]);
r[i] = sr.size();
}
int ans = 0;
for (int i = 1; i < n; i++){
int sum = l[i] + r[i + 1];//左答案是1 -- i,右答案是i + 1 -- n
ans = max(ans, sum);
}
cout << ans;
return 0;
}