zoukankan      html  css  js  c++  java
  • codeforces 709B Checkpoints

    题目链接:http://codeforces.com/problemset/problem/709/B

    题目大意:

      第一行给出两个数 n,x。第二行 输入 n 个数。

      要求:从x位置遍历 n-1 个位置,使得的距离最短。

    解题思路:

      1.如果n==1,则一个数也不用扫描,ans=0

      2.否则 将数组排序,x所在的“ 合适 ”位置有两种可能

       

      那么可以得出结果了,假定数放在一个数组na中

      第一种可能 ans1=  na[n-2]-na[0] + min( abs(na[0]-x), abs(na[n-2]-x) )  //na[n-2]-na[0] =>得到一遍的距离 min( abs(na[0]-x), abs(na[n-2]-x) ) =》得到往返多余的 较近距离

      第二种可能 ans2=  na[n-1]-na[1] + min( abs(na[n-1]-x),abs(na[n-1]-x) )  //同上

      结果: min(ans1,ans2)

     AC Code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+100;
     4 int na[N];
     5 int main()
     6 {
     7     int n,x,i;
     8     while(scanf("%d%d",&n,&x)!=EOF)
     9     {
    10         for(i=0; i<n; i++)
    11             scanf("%d",&na[i]);
    12         if(n==1)printf("0
    ");
    13         else
    14         {
    15             sort(na,na+n);
    16             int ans1,ans2;
    17             ans1=na[n-1]-na[1]+min(abs(na[1]-x),abs(na[n-1]-x));
    18             ans2=na[n-2]-na[0]+min(abs(na[0]-x),abs(na[n-2]-x));
    19             printf("%d
    ",min(ans1,ans2));
    20         }
    21     }
    22     return 0;
    23 }
  • 相关阅读:
    光盘和U盘
    解决时间同步
    僵尸进程 和 孤儿进程
    Centos虚拟机设置网络模式
    常用CDN 和 后台管理模板
    微信小程序wxs如何使用
    kubernetes/client-go--使用 Clientset 获取 Kubernetes 资源对象
    samplecontroller
    volcano
    DNS欺骗
  • 原文地址:https://www.cnblogs.com/A--Q/p/5892596.html
Copyright © 2011-2022 走看看