CF1712A的题解

osfly / 2023-08-25 / 原文

挺简单的一道题。

要想使 \(\sum\limits^k_{i=1}p_i\) 最小,很明显的,前 \(k\) 个数必须为 \(1\sim k\)。设 \(c_i\)\(i\)\(p\) 里出现的位置,则答案为 \(\sum\limits^{k}_{i=1}[c_i>k]\)

#include<cstdio>
int t;
int n,k;
int a[110],c[110];
int ans;
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		ans=0;
		scanf("%d%d",&n,&k);
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			c[a[i]]=i; 
		}
		for(int i=1;i<=k;i++)
			if(c[i]>k) ans++;
		printf("%d\n",ans);
	}
	return 0;
}