C. Match Points(排序&双指针)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Match Points(排序&双指针)相关的知识,希望对你有一定的参考价值。

C. Match Points(排序&双指针)

考虑排序后,如何贪心最优。

因为要尽可能匹配多,所以一个指针指向 a n a_n an,最多匹配 n 2 \\dfrac{n}{2} 2n对,所以另一个指针指向 n 2 \\dfrac{n}{2} 2n

int n,z,s;
int a[N];
int main(){
	scanf("%d%d",&n,&z);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);sort(a+1,a+n+1);
	for(int i=n,j=n/2;j;j--)
		if(a[i]-a[j]>=z) s++,i--;
	printf("%d\\n",s);
	return 0;
}

方法2是二分,枚举答案。

然后显然是贪心选取前 m i d mid mid个后 m i d mid mid个,且一一对应匹配最优的。

以上是关于C. Match Points(排序&双指针)的主要内容,如果未能解决你的问题,请参考以下文章

Educational Round 64 C. Match Points(二分,贪心)

cf1000 C. Covered Points Count

Codeforces C Match Points

cf Match Points 一个骚题目

插入排序 VS 双指针法 ?

剑指offer链表题的双指针法总结