题解:P15063 [UOI 2024 II Stage] Creating an Array
水橙。
题意简述
给出
为什么是降序排列?
这里拿一个数组举例,比如说 3 0 2。
我们来拿 3 0 2 和 3 2 0 做对比。
-
-
- 不同项是
02 和20 。 - 不难发现
20 > 2 。 - 并且对于任何两位数,十位大于个位时,这个数大于它的反序数。
- 所以降序是最优的。
思路
- 读取每个数字的使用次数。
- 构造数组。
- 快速排列。
- 为了便利性,这里推荐使用
vector,比普通数组更加方便。 - 为了避免出错,快排降序建议自己写函数。
- 由于数字为
0 \sim 9 ,所以不需要用到long long。AC code
::::success[代码]
#include<bits/stdc++.h> using namespace std; bool comp(int a, int b){ // 快速排列降序函数 return a > b; } int main(){ int c[10]; vector<int> a; // 推荐的 vector 动态数组 for(int i = 0; i < 10; i++){ cin >> c[i]; while(c[i]--){ // 次数 a.push_back(i); // 压入 } } sort(a.begin(), a.end(), comp); // 快排 for(int i = 0; i < a.size(); i++){ cout << a[i] << " "; } } /* directed by Bright_algorithmer01 this is a solution */:::: AC 记录
切题千万条,学术第一条。作弊抄题解,棕名两行泪!