2021牛客寒假演算法基礎集訓營3 I 序列的美觀度

2021-10-19 06:56:03 字數 2344 閱讀 2308

題目鏈結

這題用dp比較好解決。那麼首先就嘗試著找關係。假設我們已經得知 0

00 到 i−1

i - 1

i−1 序列的最大美觀度,此時新進來乙個元素 a[i

]a[i]

a[i]

,那麼有兩種種可能:

在此前,我們先設定乙個變數 tai

ltail

tail

表示前 i−1

i - 1

i−1 個元素所構成的最大美觀度序列的結尾的位置。再設定乙個標記陣列 vis

[]

visvi

s[] ,表示當前在 [ta

il,i

−1

][tail,i - 1]

[tail,

i−1]

的區間內有無數值為 a[i

]a[i]

a[i]

的元素,即通過訪問 vis

[a[i

]]

vis[a[i]]

vis[a[

i]] 的方式來判斷。

①:區間 [ta

il,i

−1

][tail,i - 1]

[tail,

i−1]

中有 a[i

]a[i]

a[i]

,即此刻 vis

[a[i

]]=1

vis[a[i]] = 1

vis[a[

i]]=

1,即 dp[

i]=d

p[i−

1]+1

dp[i] = dp[i-1] + 1

dp[i]=

dp[i

−1]+

1 。也就是達到0到 i

ii 的最大美觀度。不會有更大的美觀度比 dp[

i−1]

+1

dp[i-1] + 1

dp[i−1

]+1 還大。如果有,那麼 dp[

i−1]

dp[i-1]

dp[i−1

] 將更大,自相矛盾。那麼這裡有乙個細節,我們雖然可以不斷更新 i−1

i - 1

i−1 序列最大美觀度的結尾的位置,但是 i−1

i - 1

i−1 序列中可能有別的子串行的美觀度是 dp[

i−1]

dp[i-1]

dp[i−1

] ,那麼應該選哪個呢?因為我們是從前往後遍歷,所以我們選擇的一定是第一次使得其等於 dp[

i−1]

dp[i-1]

dp[i−1

]的位置,就是結尾在最左側的位置,這應該是乙個最優的位置,因為這樣能使得 i−1

i-1i−

1 序列的最大美觀度序列的尾部至 i

ii 之間有更多的元素供 a[i

]a[i]

a[i]

選擇,所以肯定要選擇尾部在盡可能左側的情況。此後要記得先清除區間 [ta

il,i

−1

][tail,i - 1]

[tail,

i−1]

中的 vis

[]

visvi

s[] 的狀態,然後再更新結尾,並且將新結尾的 vis

[]

visvi

s[] 設定為可用。

②:前 i−1

i - 1

i−1 序列最大美觀度的序列的尾部至 i

ii 之間沒有 a[i

]a[i]

a[i]

,即 dp[

i]=d

p[i−

1]

dp[i] = dp[i-1]

dp[i]=

dp[i

−1] 。此時無法形成更大的美觀度,那麼就只要將 a[i

]a[i]

a[i]

這個數設定為可用即可。

**實現

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

int n, tail_pos;

int a[

1000006];

int dp[

1000006];

int vis[

1000006];

intmain()

else

}printf

("%d"

, dp[n -1]

);}

2021牛客寒假演算法基礎集訓營3

三場牛客下來覺得自己越來越不在狀態,思路不清晰,一下手就是bug,每調完一題刷下榜都被甩開十里地,罰時慘不忍睹 傳送門 簽到 include using namespace std typedef long long ll const ll inf 0x3f3f3f3f const ll mod 1...

2021牛客寒假演算法基礎集訓營1

題目描述 請你構造乙個非空的括號字串,包含正好 k 個不同合法括號對。所謂括號字串,是指由 和 這兩種字元構成的字串。要求構造的字串長度不超過100000。輸入描述 乙個整數 k。乙個整數 kk。0 k 1e9 輸出描述 乙個僅包含左右括號字串,其中有 kk 個合法的括號對。如果有多種構造方法,輸出...

2021牛客寒假演算法基礎集訓營6

思路 k1排k2前面滿足 k1.a k2.ax k2.b k1.b k1.ax k1.b k2.b k2.ak1.b k2.b k1.a k2.a k1.b include define ull unsigned long long define ll long long const int inf...