1 圓圈舞蹈(circle )

2021-09-06 08:09:24 字數 1616 閱讀 9183

1、圓圈舞蹈(circle.???)

問題描述:

熊大媽的奶牛圍成了乙個圈在跳圓舞曲。由於沒有嚴格的教育,奶牛們之間的間隔距離不一致,現在告訴你相鄰兩個奶牛間的距離,熊大媽想知道兩隻最遠的奶牛到底隔了多遠。奶牛a到b的距離為a順時針走或逆時針走到達b的較短距離。

輸入格式:

第一行乙個整數n,表示有n只奶牛。

接下來2~n+1行,第i行有乙個數,表示第i-1頭奶牛順時針到第i頭奶牛的距離 (1<=距離<=maxlongint,距離和<=maxlongint) 。第n+1行的數表示第n頭奶牛順時針到第1頭奶牛的距離。

輸出格式:

一行乙個整數,表示最大距離。

輸入樣例:51

2345

輸出樣例:

7樣例說明:

所有奶牛i到j之間的距離和到達方式(順為順時針,逆為逆時針)如下表,所以,最遠的兩頭奶牛為3到5,距離是7。

i\j123

4510

1(順)

3(順)

6(順)

5(逆)

21(逆)

02(順)

5(順)

6(逆)

33(逆)

2(逆)

03(順)

7(順)

46(逆)

5(逆)

3(逆)

04(順)

55(順)

6(順)

7(逆)

4(逆)

0資料限制:

40%資料:2<=n<=500;

60%資料:2<=n<=20000;

100%資料:2<=n<=100000。

【自己題解】

var a:array[0..100000] of longint;

c,n,i,j,ans,t:longint;

begin

assign(input,'circle.in');reset(input);

assign(output,'circle.out');rewrite(output);

readln(n);

for i:=1 to n do begin

readln(a[i]);

inc(c,a[i]);

end;

for i:=1 to n do begin

dec(t,a[i-1]);

while t<(c+1) div 2 do begin

inc(j);

if j>n then j:=1;

inc(t,a[j]);

end;

if c-t>ans then ans:=c-t;

dec(t,a[j]);

if t>ans then ans:=t;

dec(j);

if j=0 then j:=n;

end;

writeln(ans);

close(input); close(output);

end.

奶牛專題1 圓圈舞蹈

問題描述 熊大媽的奶牛在時針的帶領下,圍成了乙個圓圈跳舞。由於沒有嚴格的教育,奶牛們之間的間隔不一致。奶牛想知道兩隻最遠的奶牛到底隔了多遠。奶牛a到b的距離為a順時針走和逆時針走,到達b的較短路程。告訴你相鄰兩個奶牛間的距離,請你告訴奶牛兩隻最遠的奶牛 到底隔了多遠。輸入 第一行乙個整數n,表示有n...

2768 圓圈遊戲(circle)

在無聊的時候,小k和小h會在紙上玩這樣乙個遊戲。我們可以將紙看做乙個平面直角座標系。小h會先在上面畫出 n nn 個圓,並把每個圓的圓心以及半徑都告訴小k。小h畫的 n nn 個圓中,任意兩個圓不會出現相交或相切的情況。小k需要做的就是從這 n nn 個圓中選出若干個圓,使得選出的任意乙個圓都不被另...

2768 圓圈遊戲(circle)

題目描述 在無聊的時候,小k和小h會在紙上玩這樣乙個遊戲。我們可以將紙看做乙個平面直角座標系。小h會先在上面畫出 n 個圓,並把每個圓的圓心以及半徑都告訴小k。小h畫的 n 個圓中,任意兩個圓不會出現相交或相切的情況。小k需要做的就是從這 n 個圓中選出若干個圓,使得選出的任意乙個圓都不被另乙個選出...