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;
}