• 圆周舞蹈 (Standard IO)


    题意/Description:

           熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞。由于没有严格的教育,奶牛们之间的间隔不一致。
      奶牛想知道两只最远的奶牛到底隔了多远。奶牛A到奶牛B的距离为A顺时针走和逆时针走,到达B的较短路程。告诉你相邻两个奶牛间的距离,请你告诉奶牛两只最远的奶牛到底隔了多远。

     

    读入/Input

           第一行一个整数N,表示有N只奶牛。(2<=N<=100000)。
      接下来2~N+1行,第i行有一个数,表示第i-1头奶牛顺时针到第i头奶牛的距离。(1<=距离<=maxlongint,距离和<=maxlongint)
      第N+1行的数表示第N头奶牛顺时针到第1头奶牛的距离。

     

    输出/Output

           一行,表示最大距离。

     

    题解/solution

          听LZH说,算出前缀和,二分就行了。我急脳(niao),下了。

     

    代码/Code

    var
      sum:array [0..200001] of longint;
      n,max,min:longint;
    procedure init;
    var
      i,c:longint;
    begin
      readln(n);
      for i:=2 to n+1 do
        begin
          readln(c);
          sum[i]:=sum[i-1]+c;
        end;
      for i:=n+2 to 2*n do
        sum[i]:=sum[n+1]+sum[i-n];
      max:=0;
    end;
    
    procedure main;
    var
      i,l,r,mid,t,k,minn:longint;
    begin
      for i:=1 to n do
        begin
          l:=i; r:=n+i;
          min:=maxlongint;
          while l<=r do
            begin
              mid:=(l+r) shr 1;
              t:=sum[mid]-sum[i];
              k:=sum[n+i]-sum[mid];
              if abs(t-k)<min then
                begin
                  min:=abs(t-k);
                  if t<k then minn:=t else minn:=k;
                  if minn>max then max:=minn;
                end;
              if l=mid then break;
              if t<k then l:=mid else r:=mid;
            end;
          t:=sum[r]-sum[i];
          k:=sum[n+i]-sum[r];
          if abs(t-k)<min then
            begin
              min:=abs(t-k);
              if t<k then minn:=t else minn:=k;
              if minn>max then max:=minn;
            end;
        end;
    end;
    
    begin
      init;
      main;
      writeln(max);
    end.



  • 相关阅读:
    跟我一起来学ORACLE开发系列之一:CentOS下ORACLE安装篇 老猫
    Oracle中常用的数据字典 老猫
    面试遇到的问题 老猫
    ORACLE删除重复数据 老猫
    fstab修改错了后的解决方案 老猫
    PHP 中使用参数化查询
    安装和配置 WAMP 网页服务
    SkyDrive API 的使用
    PHP 中错误的类型与处理
    JavaScript 中的事件模拟
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319638.html
Copyright © 2020-2023  润新知