题解
2024-02-18 10:32:00
发布于:广东
37阅读
0回复
0点赞
作为整个比赛唯一一道普及-的题目,难度肯定是要高很多的
我是没想出来他们那些简单的解法qwq
先看看题目,可以任意选取k个数,所以我们只需要看看有多少个数可以不用拿取排序的
先用备用数组sort一下,找出第一小以后的第二小,第三小……如果第n+1小在第n小的前面那n就是不用拿取排序的数的数量
// Man!
// What can i say?
// Mamba out!
// 使用瑞克五代成功的注入ac狗.火树给我AC.
// 使我的眼睛旋转, 爱来自瓷器.
// AC时间:2024-02-17 11:45:14.1919810
/*科技第一,素质第一*/ // Man!
/*科技第一,素质第一*/ // What can i say?
/*科技第一,素质第一*/ // Mamba out!
/*科技第一,素质第一*/
/*科技第一,素质第一*/ // 使用瑞克五代成功的注入ac狗.
/*科技第一,素质第一*/ // 使我的眼睛旋转, 爱来自瓷器.
/*科技第一,素质第一*/ // AC时间:2024-02-17 11:45:14.1919810
/*科技第一,素质第一 */ /*科技第一,素质第一*/ #include <iostream>
/*科技第一,素质第一 */ /*科技第一,素质第一*/ #include <cstdio>
/*科技第一,素质第一 */ /*科技第一,素质第一*/ #include <algorithm>
/*科技第一,素质第一 */ /*科技第一,素质第一*/ using namespace std;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int a[100005], b[100005], st = 1;//备用数组
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int ct;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int mx = 0x3f3f3f3f, idx, idx2;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int main(){
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int n, m;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ cin >> n >> m;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ for(int i = 1; i <= n; i++){
/*科技第一,素质第一 */ /*科技第一,素质第一*/ cin >> a[i];
/*科技第一,素质第一 */ /*科技第一,素质第一*/ if(mx > a[i]){
/*科技第一,素质第一 */ /*科技第一,素质第一*/ mx = a[i];
/*科技第一,素质第一 */ /*科技第一,素质第一*/ idx = i;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }
/*科技第一,素质第一 */ /*科技第一,素质第一*/ b[i] = a[i];
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }sort(b + 1, b + n + 1);//排序
/*科技第一,素质第一 */ /*科技第一,素质第一*/ idx2 = 1;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ for(int i = idx; i <= n; i++){
/*科技第一,素质第一 */ /*科技第一,素质第一*/ if(a[i] == b[idx2 + 1]){//找到第二小,第三小……
/*科技第一,素质第一 */ /*科技第一,素质第一*/ idx2++;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ st++;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }
/*科技第一,素质第一 */ /*科技第一,素质第一*/ //cout << st << ' ';
/*科技第一,素质第一 */ /*科技第一,素质第一*/ ct = (n - st) / m;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ if((n - st) % m) ct++;//如果有剩的,就要再拿一遍
/*科技第一,素质第一 */ /*科技第一,素质第一*/ cout << ct;
/*科技第一,素质第一 */ /*科技第一,素质第一*/
/*科技第一,素质第一 */ /*科技第一,素质第一*/ return 0;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }
这里空空如也
有帮助,赞一个