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(二分,贪心)