• Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)D. Office Keys


    题意:n,k,p,一个横坐标轴,输入n个人的位置,K个钥匙的位置,给出办公室的位置,问每个人都拿到钥匙到办公室的最短时间是多少。

    思路:我们可以二分时间,那怎么判断是否可以在该时间都到达,对N,K排序,对于第一个钥匙   ,abs(人[i]-钥匙[1])+abs(钥匙[1]-p),后面是不变的,如果某个人可以通过该钥匙到达,那么后面的人用该钥匙距离肯定更长,如果没人能用这把钥匙,换第二把钥匙。。。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int N=2002;
     5 
     6 ll a[N],b[N];
     7 ll n,k,p;
     8 
     9 int check(ll x){
    10     for(int i=1,j=1;i<=n;i++,j++){
    11         while(j<=k&&(abs(a[i]-b[j])+abs(p-b[j]))>x) j++;
    12         if(j>k) return 0;
    13     }
    14     return 1;
    15 }
    16 int  main(){
    17     cin>>n>>k>>p;
    18     for(int i=1;i<=n;i++){
    19         scanf("%d",&a[i]);
    20     }
    21     for(int i=1;i<=k;i++){
    22         scanf("%d",&b[i]);
    23     }
    24     sort(a+1,a+1+n);
    25     sort(b+1,b+1+k);
    26     ll l=0,r=1e18,mid,ans=r;
    27     while(l<=r){
    28         mid=(l+r)>>1;
    29         if(check(mid)) {
    30             ans=mid;r=mid-1;
    31         }
    32         else l=mid+1;
    33     }
    34     cout<<ans<<endl;
    35 }
  • 相关阅读:
    Codeforces Round #631 (Div. 2)
    Codeforces Round #500 (Div. 2) [based on EJOI]
    KMP+状态机
    状态机模型
    最短编辑距离
    stringstream读入-最优乘车
    多重背包
    Codeforces:B. New Year and Ascent Sequence
    查找目录下所有文件使用到的宏
    QProcess调用外部程序并带参执行
  • 原文地址:https://www.cnblogs.com/hhxj/p/7171223.html
Copyright © 2020-2023  润新知