• Codeforces Round #424


    D. Office Keys

    题意

    在x轴上,给出n个人初始位置, 以及k把钥匙,和集合位置,每个人要拿一把钥匙然后到集合位置,要使这n个人中需要走的距离中最大的一个最小(每种情况最大值中求个最小),求出最小值

     ( 1 ≤ n ≤ 1 000, n ≤ k ≤ 2 000, 1 ≤ p ≤ 1e9 )

    分析

    结论:最优情况下,选择的n把钥匙肯定是连续的n把

    证明:画下钥匙和人以及集合位置的位置关系结论很显然

    直接枚举钥匙起点的时间复杂度为O(n^2)

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    const int maxn = 1000+10;
    const int N = 1e6+5;
    
    int n,k;
    int p[maxn],key[maxn*2],office;
    
    int main()
    {
        scanf("%d%d%d", &n, &k, &office);
        for(int i=1;i<=n;i++)
        {
            scanf("%d", &p[i]);
        }
        for(int i=1;i<=k;i++)
        {
            scanf("%d", &key[i]);
        }
        sort(p+1, p+n+1);
        sort(key+1,key+k+1);
        ll answer=10000000000000;
        for(int i=1;i<=k-n+1;i++)
        {
            ll ans=0;
            for(int j=1;j<=n;j++)
            {
                ans=max(ans,1ll*(abs(key[j+i-1]-p[j])+abs(key[i+j-1]-office)));
            }
            answer=min(answer, ans);
        }
        printf("%lld
    ", answer);
        return 0;
    }
    View Code

     


    要么优秀要么生锈
  • 相关阅读:
    TypeScript入门
    github个人博客绑定单独阿里域名指南
    搜索引擎命令大全!
    Linux入门基础篇
    CSS之BFC、IFC、FFC and GFC
    陀螺仪属性介绍和实战
    web语义化,从松散到实战
    前端跨域深入理解
    快速安装自己的Sublime系列
    hint.css使用说明
  • 原文地址:https://www.cnblogs.com/Superwalker/p/7887235.html
Copyright © 2020-2023  润新知