牛客網Wannafly 21 大水題(dp)

2021-08-22 05:54:12 字數 1089 閱讀 6629

現在給你n個正整數ai,每個數給出一「好數程度」 gi(數值相同但位置不同的數之間可能有不同的好數程度)。對於在 i 位置的數,如果有一在j位置的數滿足 j < i 且 ai=aj,則你可以將位於[i,j]閉區間內的序列評為「好序列」,然後獲得∑gk(j≤k≤i)(此閉區間內「好數程度」之和)分數。

注意: 在所有情況下,每個數都只能被乙個」好序列」包含(只能與其他相應數被評為」好序列」一次);在符合要求的情況下,」好序列」的評定次數不受限制,且通過不同」好序列」獲得的分數可以累加。

第一行有乙個正整數n。

接下來的一行有n個正整數ai,表示意義如上。

(保證ai在32位整型範圍內)

接下來的一行有n個正整數gi,表示ai的」好數程度」。

(保證gi在64位整型範圍內)

乙個整數,你可以獲得的最大分數(通過不同」好序列」獲得的分數可以累加),保證答案在64位整型範圍內。

示例1複製

7

1 2 1 2 3 2 3

1 4 3 4 3 4 5

複製

23
資料範圍 2≤n≤300000
思路: 這個題還是蠻有意思的。對於每一位,我們需要考慮他的前邊和他一樣的是否要選,但是如果這樣去dp的話,肯定是會超時的,但是這個題有乙個比較好的性質。  就對於當前這一位,我們只需要考慮他的前一位或者他的前乙個和他相同的,每次去考慮和他的前乙個相同的,就相當於間接地考慮了前邊所有和他相同的。

**: 

#includeusing namespace std;

typedef long long ll;

const int n =3e5+5;

ll a[n];

ll sum[n];

ll dp[n][2];

int n;

maplast;

int main()

else

} ll ans=max(dp[n][0],dp[n][1]);

cout

63 4 4 3 4 4

1 2 3 4 5 100

*/

Wannafly挑戰賽21 大水題 DP

時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 題目描述 現在給你n個正整數ai,每個數給出一 好數程度 gi 數值相同但位置不同的數之間可能有不同的好數程度 對於在 i 位置的數,如果有一在j位置的數滿足 j ...

牛客網 Wannafly挑戰賽21 A 燈塔

題目鏈結 題目描述 z市是一座港口城市,來來往往的船隻依靠燈塔指引方向。在海平面上,存在n個燈塔。每個燈塔可以照亮以它的中心點為中心的90 範圍。特別地,由於特殊限制,每個燈塔照亮範圍的角的兩條邊必須要麼與座標軸平行要麼與座標軸成45 由於經費限制,z市的燈塔只能被點亮一座。你需要求出在這種情況下,...

牛客網 15973 水題

題目描述 一張地圖上有有n個城市,他們可以通過雙向道路互相連線,但是每兩座城市只能有一條雙向道路互相連線。現在我們想要滿足條件 地圖中不能有任意三個城市可以互相直達 請問滿足這個條件的最大道路數是多少?輸入描述 多組輸入 每組輸入乙個n 1 n 1000 輸出描述 每組答案輸出一行 輸入 42 3輸...