CF594A Warrior and Archer

CF594A Warrior and Archer

洛谷传送门

题意翻译

给出偶数个点,AB两人轮流去掉一个点,直到只剩两个

A要使两点距离尽可能近,B要使两点距离尽可能远

假设AB两人都使用最佳策略,求最后两点间距离


题解:

题面说得不太好,重新给一遍题目大意:给出偶数的N,和N个点的坐标(数轴,整数),A,B轮流拿走一个点,A先拿,A要使两点距离尽可能近,B要使两点距离尽可能远,假设AB两人都使用最佳策略,求最后两点间距离。

其实感觉算不上紫题。

肯定要先按坐标排序啊,然后因为A要使得最后的两点距离尽可能近,那就要从两边选点,B就要从中间选点了。那么这就是一个简单的贪心,直接按题意,枚举所有可行点对即可。复杂度卡在排序上。

代码:

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=2e5+5;
const int INF=1e9;
int n;
int a[maxn];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) 
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    int ans=INF;
    for(int i=1;i<=n/2;i++)
        ans=min(ans,a[i+n/2]-a[i]);
    printf("%d",ans);
    return 0;
}
posted @ 2020-11-30 10:41  Seaway-Fu  阅读(96)  评论(0编辑  收藏  举报