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 個圓中選出若干個圓,使得選出的任意乙個圓都不被另乙個選出...