zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    类class解读
    函数重载
    for循环之省略{}
    《c++程序设计现代方法》笔记2
    【程序】c++雇员工资管理系统
    贪婪法
    乘法口诀程序
    百钱买百鸡问题程序
    【转】牛人十个月自学C++ 现在做C#开发工作
    c++基本规则习惯
  • 原文地址:https://www.cnblogs.com/fusiwei/p/14060005.html
Copyright © 2011-2022 走看看