Codevs P1648 最大和


輸入輸出


輸入描述 Input Description

第一行輸入N,表示數字的個數,第二行輸入這N個數字。


輸出描述 Output Description

輸出最大和。


樣例 Sample


樣例輸入 Sample Input

8
2 -4 6 -1 -4 8 -1 3


樣例輸出 Sample Output

14



數據範圍及提示 Data Size & Hint

數據說明:
40% 1<=N<=300
60% 1<=N<=2000
100% 1<= N<=100000,答案在longint範圍內。


分析


環狀求最大值出現在兩種情況中

  1. 和鏈狀一樣,只出現在n內
  2. 和鏈狀不同,即最大值出現在兩頭,那麼中間那部分必然是最小和,也就是最大值爲sum-minn;

    綜上所述
    該環狀取到最大值顯然爲兩種中較大值。
    由此只需比較鏈狀連續最大和和sum-鏈狀連續最小和。


代碼如下

program p1648;
var n,i,j,maxn,minn,sum:longint;
    f1,f2,num:array[0..100000] of longint;

function max(a,b:longint):longint;
begin
 if a>b then exit(a);
 exit(b);
end;

function min(a,b:longint):longint;
begin
 if a<b then exit(a);
 exit(b);
end;

begin
 readln(n);
 sum:=0;
 for i:=1 to n do
  begin
   read(num[i]);
   sum:=sum+num[i];
  end;
 maxn:=0;
 minn:=0;
 f1[0]:=0;
 f2[0]:=0; 
 for i:=1 to n do
  begin
   f1[i]:=max(f1[i-1]+num[i],0);
   f2[i]:=min(f2[i-1]+num[i],0);
   maxn:=max(maxn,f1[i]);
   minn:=min(minn,f2[i]);
  end;
 maxn:=max(maxn,sum-minn);
 write(maxn);
end.

這裏寫圖片描述


落葉

  ——(賈平凹創作散文)

窗外,有一棵法桐,樣子並不大的。春天的日子裏,它長滿了葉子。枝根的,綠得深,枝梢的,綠得淺;雖然對列相間而生,一片和一片不相同,姿態也各有別。沒風的時候,顯得很豐滿,嬌嫩而端莊的模樣。一早一晚的斜風裏,葉子就活動起來,天幕的襯托下,看得見那葉背面了了的綠的脈絡,像無數的彩蝴蝶落在那裏,翩翩起舞;又像一位少婦,丰姿綽約的,作一個嫵媚的笑。


我常常坐在窗裏看它,感到溫柔和美好。我甚至十分嫉妒那住在枝間的鳥夫妻,它們停在葉下歡唱,是它們給法桐帶來了綠的歡樂呢,還是綠的歡樂使它們產生了歌聲的清妙?


法桐的歡樂,一直要延長一個夏天。我總想,那鼓滿着憧憬的葉子,一定要長大如蒲扇的,但到了深秋,葉子並不再長,反要一片一片落去。法桐就削瘦起來,寒傖起來。變得赤裸裸的,唯有些嶙峋的骨。而且亦都僵硬,不再柔軟婀娜,用手一折,就一節一節地斷了下來。


我覺得這很殘酷,特意要去樹下揀一片落葉,保留起來,以作往昔的回憶。想:可憐的法桐,是誰給了你生命,讓你這般長在土地上?既然給了你這一身綠的歡樂,爲什麼偏偏又要一片一片收去呢!


來年的春上,法桐又長滿了葉子,依然是淺綠的好,深綠的也好。我將歷年收留的落葉拿出來,和這新葉比較,葉的輪廓是一樣的。喔,葉子,你們認識嗎,知道這一片是那一片的代替嗎?或許就從一個葉柄眼裏長上來,凋落的曾經那麼悠悠地歡樂過,歡樂的也將要寂寂地凋落去。


然而,它們並不悲傷,歡樂時須盡歡樂;如此而已,法桐竟一年大出一年,長過了窗臺,與屋檐齊平了!


我忽然醒悟了,覺得我往日的哀嘆大可不必,而且有十分的幼稚呢。原來法桐的生長,不僅是綠的生命的運動,還是一道哲學的命題的驗證:歡樂到來,歡樂又歸去,這正是天地間歡樂的內容;世間萬物,正是尋求着這個內容,而各自完成着它的存在。


我於是很敬仰起法桐來,祝福於它:它年年凋落舊葉,而以此渴望來年的新生,它纔沒有停滯,沒有老化,而目標在天地空間里長成材了。

發佈了76 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章