n個數ai組成的序列,在這n個數中選x個數,保證任意k個相連的數有1個數被選中。求這n個數中選x個數的最大和。
n <= 5000。
1.dp[i][j]表示前i個數選j個數且其中包括第i個數的最大和。
2.dp[i][j] = max(dp[m][j-1] + a[j]) , m∈[max(0 , i - k) , i)。
3.這道題因為n的原因o(n^3)的方法過不了,得把第三層迴圈變成乙個單調佇列,這樣複雜度就降為了o(n^2)。
因為dp[m][j - 1]中m是不確定的,j-1是確定的,所以第一層迴圈變為j,第二層迴圈變成i。
4.舉個例子:假如當前在計算dp[5][j],雙向佇列內有2,3,4,2符合題意正在用,而dp[4][j-1]#define n 5005
using namespace std ;
int n , k , x , m ;
long long dp[n][n] ;
deque q ;
int main()
q.clear() ;
}ans = -1 ;
for(i = max(x , n - k + 1) ; i <= n ; i ++)
ans = max(ans , dp[i][x]) ;
if(ans < 0)
ans = -1 ;
printf("%lld" , ans) ;
}
cf 1326d2 關於kmp的思維題
題意給你乙個字串,你選擇字串的乙個字首和乙個字尾拼接成乙個回文串,輸出最長的可能的回文串。字首和字尾不能有疊加部分,每組測試樣例包含t個字串。樣例輸入 1poabbacefop 樣例輸出 poabbaop 思路 你可以先分離出兩邊一樣的部分,比如測試樣例可以變成po abbacef op 顯然po是...
Egret Engine 2D基礎教學
1.基本概念 2.可視屬性 可視屬性用來定量描述顯示物件在舞台中的顯示狀態,結合下圖說明可視屬性的含義。如上圖1所示,在egret中定義舞台的座標系 原點在螢幕左上角。橫軸使用x表示,向右為正。縱軸使用y表示,向下為正。上圖1中包含乙個灰色的矩形,該矩形擁有乙個 錨點 egret使用該點的座標表示矩...
cocos2d基礎知識
1.精靈的建立 精靈的建立 ccsprite player ccsprite create xx.png player setposition ccp x,y this addchild player 2.選單的建立 選單的使用 ccmenuitemimage item ccmenuitemimag...