眾所周知,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。
f[i][j][k] 表示前i個mz,取j段時,0代表不取最後乙個,1代表取最後乙個
之所以要分取或不取,主要判斷f[i][j][1]=max(f[i][j][1],f[i-1][j][1]+a[i]);
1 #include2using
namespace
std;34
const
int inf=0x7fffffff;5
6int n,ans=-inf;
7int a[1000001];8
int f[1000001][4][2];9
10int
main()
1123
for(int i=1;i<=n;i++)
24 ans=max(max(ans,f[i][3][0]),f[i][3][1
]);25 printf("
%d\n
",ans);
26return0;
27 }
noip模擬賽 某種數列問題
眾所周知,chenzeyu97有無數的妹子 阿掉!而且他還有很多惡趣味的問題,繼上次糾結於一排妹子的排法以後,今天他有非 chi 常 bao 認 cheng 真 zhe 去研究乙個奇怪的問題。有一堆他的妹子站成一排,然後對於每個妹子有乙個美麗度,當然美麗度越大越好,chenzeyu97妹子很多,但是...
某種數列問題
某種數列問題 jx.cpp c pas 1000ms 256mb 眾所周知,chenzeyu97有無數的妹子 阿掉!而且他還有很多惡趣味的問題,繼上次糾結於一排妹子的排法以後,今天他有非 chi 常 bao 認 cheng 真 zhe 去研究乙個奇怪的問題。有一堆他的妹子站成一排,然後對於每個妹子有...
noip模擬賽 數列
分析 打個表,會發現a1,a2中較小的乙個數會出現很多次,把這些數刪掉,就會形成若干個等差數列,每個等差數列中新出現的數的個數是a1a2較大者除以較小者.之後取個餘,繼續做重複的操作就行了.include include include include using namespace std int...