嘟嘟逛公園

2021-10-24 22:19:48 字數 1396 閱讀 6665

一道dp題目

題目題目描述

小欣有乙隻可愛的小狗,名字叫嘟嘟,晚飯後她倆經常外出散步。小欣家附近有一條「公園路」,路的一邊從東到西依次排著n個公園,有時她倆從東向西散步,有時從西向東散步。

一開始,嘟嘟根據公園的風景給每個公園打了分。小欣為了省事,每次遛狗都會事先規定乙個範圍,嘟嘟只能選擇第a個和第b個公園之間(包括a、b兩個公園)中的連續的幾個公園玩。嘟嘟當然希望選出的公園的分數總和越大越好。同時,一些公園的景觀會有所改變,所以嘟嘟的打分也可能會有一些變化。

那麼,就請你來幫嘟嘟選擇公園吧。

輸入第一行,兩個整數n和m,分別表示公園的數量和操作(遛狗或者改變打分)總數。   

接下來n行,每行乙個整數,依次給出嘟嘟開始時對公園的打分。   

接下來m行,每行三個整數。第乙個整數k,1或2。k=1表示,小欣要帶嘟嘟出去玩,接下來的兩個整數a和b給出了選擇公園的範圍(1≤a,b≤n);k=2表示,嘟嘟改變了對某個公園的打分,接下來的兩個整數p和s,表示嘟嘟對第p個公園的打分變成了s(1≤p≤n)。   

其中,1≤n≤50000,1≤m≤10000,所有打分都是絕對值不超過1000的整數。

輸出嘟嘟每出去玩一次,都對應輸出一行,只包含乙個整數,表示嘟嘟可以選出的公園得分和的最大值。

樣例輸入

【樣例輸入1】

5 312-3

451 2 3

2 2 -1

1 2 3

【樣例輸入2】

5 312-3

451 3 2

2 2 -1

1 2 3

樣例輸出

【樣例輸出1】2-1

【樣例輸出2】2-1

提示一道so easy 的dp題目

貼**:

#include

using

namespace std;

int n,m,k,a,b;

int f[

50005];

intmakemax

(int x,

int y)

sum+

=f[i]

;//多項最大

if(sum<0)

if(sum>ma***)}if

(ma***==

0) ma***=maxx;

return ma***;

}int

main()

cout<<

makemax

(a,b)

(k==

2) f[a]

=b;}

return0;

}

這裡要用到最大連續子串行和,找出單項最大和連續最大,連續最大一旦小於0就歸0(一言不合就歸0啊!),再把連續最大和單項最大pk,就ok了。

小白逛公園

描述 小新經常陪小白去公園玩,也就是所謂的遛狗啦 在小新家附近有一條 公園路 路的一邊從南到北依次排著n個公園,小白早就看花了眼,自己也不清楚該去哪些公園玩了。一開始,小白就根據公園的風景給每個公園打了分 小新為了省事,每次遛狗的時候都會事先規定乙個範圍,小白只可以選擇第a個和第b個公園之間 包括a...

小白逛公園

小白逛公園 time limit 20000ms memory limit 65536k case time limit 2000ms description 小新經常陪小白去公園玩,也就是所謂的遛狗啦 在小新家附近有一條 公園路 路的一邊從南到北依次排著n個公園,小白早就看花了眼,自己也不清楚該去...

週末訓練 逛公園

記憶體限制 512mib 時間限制 3000ms 標準輸入輸出 題目型別 傳統 評測方式 文字比較 策策每天都會去逛公園,他總是從 1 號點進去,從 n 號點出來。策策喜歡新鮮的事物,他不希望有兩天逛公園的路線完全一樣,同時策策還是乙個特別熱愛學習的好孩子,他不希望每天在逛公園這件事上花費太多的時間...