Codeforces Round #708 (Div. 2) A.Meximization 思维
-
测试样例
input
3
7
4 2 0 1 3 3 7
5
2 2 8 6 9
1
0
output
0 1 2 3 4 7 3
2 6 8 9 2
0 -
Note
In the first test case in the answer M E X MEX MEX for prefixes will be:
- M E X ( { 0 } ) = 1 MEX(\{0\})=1 MEX({0})=1
- M E X ( { 0 , 1 } ) = 2 MEX(\{0,1\})=2 MEX({0,1})=2
- M E X ( { 0 , 1 , 2 } ) = 3 MEX(\{0,1,2\})=3 MEX({0,1,2})=3
- M E X ( { 0 , 1 , 2 , 3 } ) = 4 MEX(\{0,1,2,3\})=4 MEX({0,1,2,3})=4
- M E X ( { 0 , 1 , 2 , 3 , 4 } ) = 5 MEX(\{0,1,2,3,4\})=5 MEX({0,1,2,3,4})=5
- M E X ( { 0 , 1 , 2 , 3 , 4 , 7 } ) = 5 MEX(\{0,1,2,3,4,7\})=5 MEX({0,1,2,3,4,7})=5
- M E X ( { 0 , 1 , 2 , 3 , 4 , 7 , 3 } ) = 5 MEX(\{0,1,2,3,4,7,3\})=5 MEX({0,1,2,3,4,7,3})=5
The sum of M E X = 1 + 2 + 3 + 4 + 5 + 5 + 5 = 25 MEX=1+2+3+4+5+5+5=25 MEX=1+2+3+4+5+5+5=25. It can be proven, that it is a maximum possible sum of MEX on prefixes
-
题目大意:我们先来解释一下 M E X { a 1 , a 2 ⋅ ⋅ ⋅ ⋅ a i } MEX\{a_1,a_2····a_i\} MEX{a1,a2⋅⋅⋅⋅ai},它的值表示的是 a 1 , a 2 ⋅ ⋅ ⋅ ⋅ a i a_1,a_2····a_i a1,a2⋅⋅⋅⋅ai这段前缀未出现的最小非负整数。那么给你一个大小为 n n n的数组 a a a,需要你重新构造数组,使得数组 a a a的前缀进行 M E X MEX MEX运算之和的值最大,即: ∑ i = 1 n M E X ( b 1 , b 2 , … , b i ) \sum_{i=1}^nMEX(b1,b2,…,bi) ∑i=1nMEX(b1,b2,…,bi),使这个值最大。
-
解题思路
对于这道题,我们必须要把 M E X MEX MEX给弄清楚了,怎么样使得其值最大,是不是依次将小的数填完,这样之后得到的运算结果是未出现的最小非负整数。所以我们可以对数组 a a a中的元素按唯一升序排列,这样我们可以保证计算的 M E X MEX MEX是最大的,同样排完这些之后我们再将重复的元素按任意顺序放置,因为此时 M E X MEX MEX不会再改变了,我们这样求得的 M E X MEX MEX之和即是最大值。 -
代码
/**
* @filename:C.cbp
* @Author : pursuit
* @Blog:unique_pursuit
* @email: 2825841950@qq.com
* @Date : 2021-03-17-22.33.47
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int maxn=1e5+5;
const int mod=1e9+7;
int t,n;
void solve(){
vector<int> a(n);
vector<int> b;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a.begin(),a.end());
for(int i=0;i<n;i++){
if(i==0||a[i]!=a[i-1]){
b.emplace_back(a[i]);
}
}
for(int i=1;i<n;i++){
if(a[i]==a[i-1]){
b.emplace_back(a[i]);
}
}
for(int i=0;i<n;i++){
cout<<b[i];
i==n-1?cout<<endl:cout<<" ";
}
}
int main(){
while(cin>>t){
while(t--){
cin>>n;
solve();
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话