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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章