動態規劃 最大數列

2021-06-09 21:27:30 字數 1330 閱讀 4566

最大數列

(sequence.pas/c/cpp)

【問題描述】

有乙個n項的數列a1,a2 ... an (|ai| <=10000, 1 <= i <= n)。s定義為

你的任務是求s的值,即為求乙個序列的兩個不相交子串行的最大和。

【輸入檔案】

輸入檔案sequence.in的第一行是乙個整數n(2 <= n <=100000),表示數列的項數。第二行有n個整數,用空格分隔,第i個整數ai(|ai| <=10000)是第i位數。

【輸出檔案】

輸出檔案sequence.out包括一行,這一行只包含乙個整數,就是s。

【樣例輸入】

-5 9 -5 11 20

【樣例輸出】

【資料規模】

對於30%

的資料,保證有

n <= 80;

對於70%

的資料,保證有

n <= 10000;

對於全部的資料,保證有

n <= 100000

。正反兩個rmq,然後遞推求出1到i得最優值和n到i得最優質,最後列舉中轉點。

#include #include #include long min(long a,long b)

long n;

long h[100010];

long h2[100010];

long g[100010];

long g2[100010];

long f[100010][50];

long f2[100010][50];

long sum[100010];

long sum2[100010];

long a[100010];

inline long getint()

do rs=(rs<<3)+(rs<<1)+tmp-'0';

while (isdigit(tmp=getchar()));

return sgn?rs:-rs;

}long lower(long a,long b)

long lower2(long a,long b)

inline long lg2(long a)

void rmq_init()

}}inline long rmq(long l,long r)

rmq_init();

for (long i=1;i0;i--)

long ans = -0x7f7f7f7f;

for (long i=1;i

DP動態規劃 最大數字子串

最大數字子串 time limit 1500 ms memory limit 10000 kb judge type multi cases total submit 1215 245 users accepted submit 397 209 users page view 6115 font s...

NOI 6242 找最大數列

描述 輸入n行,每行不超過100個無符號整數,無符號數不超過4位。請輸出最大整數以及最大整數所在的行號 行號從1開始 如果該資料在多個行 現,則按從小到大輸出相應行號,行號之間以乙個逗號分開。輸入一行輸入乙個正整數n n 30 之後的n行,每行包含不超過100個無符號整數,整數之間以乙個逗號分開。輸...

尋找最大數

描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n,m n可能是乙個很大的整數,但其位數不超過100位,並且保證資料...