zoukankan      html  css  js  c++  java
  • bzoj1863

    白书上的题目

    这里唯一要说一下的就是,二分答案不难想到,怎么构造答案的合理性非常值得注意

     1 var a,b,d:array[0..20010] of longint;
     2     n,l,r,m,ans,i:longint;
     3 
     4 function max(a,b:longint):longint;
     5   begin
     6     if a>b then exit(a) else exit(b);
     7   end;
     8 
     9 function min(a,b:longint):longint;
    10   begin
    11     if a>b then exit(b) else exit(a);
    12   end;
    13 
    14 function check(k:longint):boolean;
    15   var x,y,i:longint;
    16   begin
    17     x:=a[1];
    18     y:=k-a[1];
    19     b[1]:=x;
    20     d[1]:=0;
    21     for i:=2 to n do
    22       if i mod 2=1 then
    23       begin
    24         d[i]:=min(y-d[i-1],a[i]);
    25         b[i]:=a[i]-d[i];
    26       end
    27       else begin
    28         b[i]:=min(x-b[i-1],a[i]);
    29         d[i]:=a[i]-b[i];
    30       end;
    31     if b[n]=0 then exit(true) else exit(false);
    32   end;
    33 
    34 begin
    35   readln(n);
    36   for i:=1 to n do
    37     read(a[i]);
    38   if n=1 then
    39   begin
    40     writeln(a[1]);
    41     halt;
    42   end;
    43   a[n+1]:=a[1];
    44   for i:=1 to n do
    45     l:=max(l,a[i]+a[i+1]);
    46   if n mod 2=0 then writeln(l)
    47   else begin
    48     for i:=1 to n do
    49       r:=max(r,a[i]*3);
    50     ans:=r;
    51     while l<=r do
    52     begin
    53       m:=(l+r) shr 1;
    54       if check(m) then
    55       begin
    56         ans:=m;
    57         r:=m-1;
    58       end
    59       else l:=m+1;
    60     end;
    61     writeln(ans);
    62   end;
    63 end.
    View Code
  • 相关阅读:
    config文件 反射方法
    模块"xxxx.dll"已加载,但对DllRegisterServer的调用失败,错误代码为 XXXXXXXXX
    多线程定时 每天执行
    监控windows服务,当服务停止后自动重启服务
    log4net使用(winform)
    sql 第 10条 到20条
    windows 服务
    安卓屏幕模拟器
    dg_MeetingRoom 居中显示
    sql 清空所有数据
  • 原文地址:https://www.cnblogs.com/phile/p/4473125.html
Copyright © 2011-2022 走看看