某種數列問題

2022-02-28 03:28:03 字數 1331 閱讀 5657

某種數列問題  (jx.cpp/c/pas) 1000ms 256mb

眾所周知,chenzeyu97有無數的妹子(阿掉!>_<),而且他還有很多惡趣味的問題,繼上次糾結於一排妹子的排法以後,今天他有非(chi)常(bao)認(cheng)真(zhe)去研究乙個奇怪的問題。有一堆他的妹子站成一排,然後對於每個妹子有乙個美麗度,當然美麗度越大越好,chenzeyu97妹子很多,但是質量上不容樂觀,經常出現很多美麗度為負數的妹子(喜聞樂見),chenzeyu97希望從一排妹子裡找出3隊連續的妹子,使她們的美麗度和最大。注意,乙個妹子不能被編入多個隊伍而且一定要拿出三隊,不然czy會閒著沒事做~。

簡單滴說就是:

給定乙個數列,從中找到3個無交集的連續子數列使其和最大。

【輸入檔案】

第一行乙個數n,表示數列長度。

接下來有n行,每行乙個數,第i行為第i個數。

【輸出檔案】

僅有乙個數,表示最大和。

【樣例輸入】 jx.in

-1-4

-6-1

-2【樣例輸出】 jx.out

7【樣例說明】

第一隊妹子取2,3。

第二隊妹子取0,1。

第三隊妹子取1。

【資料範圍】

請大家放心,雖然chenzeyu97妹子無數,但是這次他叫來的個數n是有限的。=v=

對於30%的資料,妹子數不大於200。

對於60%的資料,妹子數不大於2000。

對於100%的資料,妹子數1000000。

而且,由於chenzeyu97沒有ccr那樣的影響力,所以他的妹子選完的最大美麗度和不超過maxlongint。(注:ccr隨便選就爆long long,因為他是把妹狂魔=v=)。

明顯的dp大體思路和std差不多

當時寫boom了

dp,dp[i][j][0]表示前i個中取j段的最大值,其中第i個被取到。f[i][j][1]表示前i個中取j段的最大值,其中第i個沒被取到。顯然max(f[n][3][0],f[n][3][1])即是所求。

轉移方程也很好寫,當前不取就從前乙個取或不取中選最優。當前取,那前乙個可以不取,也可以取。前乙個取又分兩種,一是i跟i-1連在一起,二是i自成乙個子串行。

#include#include

#include

using

namespace

std;

int f[1000006][4][2],n,a[1000006

];int

main()

printf("%d

",max(f[n][3][0],f[n][3][1

]));

return0;

}

noip模擬賽 某種數列問題

眾所周知,chenzeyu97有無數的妹子 阿掉!而且他還有很多惡趣味的問題,繼上次糾結於一排妹子的排法以後,今天他有非 chi 常 bao 認 cheng 真 zhe 去研究乙個奇怪的問題。有一堆他的妹子站成一排,然後對於每個妹子有乙個美麗度,當然美麗度越大越好,chenzeyu97妹子很多,但是...

NOIP模擬賽 某種數列問題

眾所周知,chenzeyu97有無數的妹子 阿掉!而且他還有很多惡趣味的問題,繼上次糾結於一排妹子的排法以後,今天他有非 chi 常 bao 認 cheng 真 zhe 去研究乙個奇怪的問題。有一堆他的妹子站成一排,然後對於每個妹子有乙個美麗度,當然美麗度越大越好,chenzeyu97妹子很多,但是...

數列極差問題

在黑板上寫了n個正整數排成的乙個數列,進行如下操作 每次擦去其中的兩個數a和b,然後在數列中加入乙個數a b 1,如此下去直至黑板上剩下乙個數,在所有按這種操作方式最後得到的數中,最大的記為max,最小的記作min,則該數列的極差定義位m max min。問題分析 下面通過例項來認識題目中描述的計算...