其他分享
首页 > 其他分享> > CF1712A Wonderful Permutation 题解

CF1712A Wonderful Permutation 题解

作者:互联网

题目大意

思路

要使使 \(\sum\limits_{i=1}^kp_i\) 的值最小,只需把相对较小的值排在前 \(k\) 个即可,直接用 sort 函数进行排序,排序的同时还要记录一下排序前的位置,遍历排序后前 \(k\) 个位置的数,比较他原先的位置是否在前 \(k\) 位,若不在,则说明这个数需要进行一次操作交换到前 \(k\) 位,若该数原先就在前 \(k\) 位,则不需要进行操作。

最终统计排序后的前 \(k\) 个数中原先不在前 \(k\) 位的数的个数即可。

代码

#include <bits/stdc++.h>
using namespace std;
int t,n,k;
struct node{
	int w,s;
}a[110];
bool cmp(node x,node y){
	return x.w<y.w;
}
int main() {
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&k);
		for(int i=1;i<=n;i++){
			scanf("%d",&a[i].w);
			a[i].s=i;
		}
		sort(a+1,a+1+n,cmp);
		int ans=0;
		for(int i=1;i<=k;i++){
			if(a[i].s>k){
				ans++;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
} 

标签:node,正整数,CF1712A,题解,return,int,Wonderful,操作,排序
来源: https://www.cnblogs.com/Dregen-Yor/p/16588725.html