Loading

CF1712A 题解

CF1712A 题解

题目传送门:这里

题意

一共 \(t\) 组数据,每次给你 \(n\) 个数,\(a_i\) 各不相同,每次可以选择两个下标 \(i, j\) 并且交换 \(a_i, a_j\),求出要使从 \(1 \sim k\) 的所有 \(a_i\) 的和最小。

思路

因为要使 \(1 \sim k\) 的所有 \(a_i\) 的和最小,所以和最小应该为 \(1 \sim k\) 的和。

所以只要判断 \(1 \sim k\) 的所有 \(a_i\) 是否小于 \(k\) 就可以了。

上代码

#include <iostream>

using namespace std;

int t, n, k, p;

int main(){
  cin >> t;
  while (t--) {
    cin >> n >> k;
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
      cin >> p;
      if (i <= k && p > k) {   // 判断是否小于 k
        cnt++;       // 次数累加
      }
    }
    cout << cnt << endl;
  }
  return 0;
}
posted @ 2023-03-02 22:35  chengning0909  阅读(2)  评论(0编辑  收藏  举报