洛谷 P2008 大朋友的數字

2022-05-01 00:51:16 字數 761 閱讀 6205

dp,動態規劃   樹狀陣列   最長不下降子串行

by  generalliu

題目就是說給一串由 0~9 組成的序列

求 以 i (1~n) 結尾 的 最長不下降子串行 的 和

(最長不下降子串行不唯一時選編號字典序最小的)解兩步

1 求最長不下降子串行

2 求 步驟1 的和

1o(n^2) 暴力不必說 (因為數字只有 0~9 十個, 即10*n, 所以就是 o(n)啊)

o(n logn) 樹狀陣列 log10≈3.幾,即3*n 也可以算 o(n)啊;

對於 數值x 查詢 以0~x結尾的 最長不下降子串行 長度 

所得長度 +1 即為所求

用 樹狀陣列 維護

!!!!

樹狀陣列沒有 0 啊

那就每個數 查詢和更新 都加一

因為這個我卡了 tle 當時相當不解

2再開乙個陣列儲存序列和

在步驟1中一起維護即可

詳見** query() 和 update()

**

#includeusing

namespace

std;

#define low k&-k

int ret,l,n,tree[10010],s[10010

];void query(int k)

void update(int k)

intmain()

return0;

}/*50 2 5 3 4

*/

洛谷P1982 小朋友的數字

有 n 個小朋友排成一列。每個小朋友手上都有乙個數字,這個數字可正可負。規定每個小朋友的特徵值等於排在他前面 包括他本人 的小朋友中連續若干個 最少有乙個 小朋友手上的數字之和的最大值。作為這些小朋友的老師,你需要給每個小朋友乙個分數,分數是這樣規定的 第乙個小朋友的分數是他的特徵值,其它小朋友的分...

洛谷P1982 小朋友的數字 題解

題目傳送 簡單地說,這題就是讓我們求前i個數的最大子串和和最值。對於最大子串和,我們可以設乙個變數qian,表示以當前元素結尾的最大子串的子串和。若搜尋完第i 1個小朋友,現在看到第i個小朋友時,若qian大於0,就說明以第i 1個小朋友為結尾的最大子串和的值大於0,那麼讓這小朋友連上這個字串的話得...

洛谷 P1851 好朋友

小可可和所有其他同學的手腕上都戴有乙個射頻識別序列號碼牌,這樣老師就可以方便的計算出他們的人數。很多同學都有乙個 好朋友 如果 a 的序列號的約數之和恰好等於b 的序列號,那麼 a的好朋友就是 b。在這裡,乙個數的約數不包括這個數本身。因為一些同學的號碼約數和大於其他任何同學的號碼,所以這些同學沒有...