zoj2901 DP 二進位制優化

2021-07-27 09:12:52 字數 617 閱讀 4017

題意:

要排乙個l長度的序列,當 j 放在 i 後面的時候會增加v[ i ][ j ]的值,求構成l長度序列的最大值。

思路:可以想到預處理任意兩點的最大值是多少,然後題目還有個限制,就是長度,那麼再加一維k,

dp[k][i][j] 代表長度為k,i 到 j的最大價值。

但是我們看到l很大,這樣不行,那麼就把長度表示成二進位制,dp[0][i][j]為長度為1時,i到j的最大價值,dp[k][i][j]代表長度為(2^k+1),i到j的最大價值。

最後求長度l的最大值。

貼一發大神的code。。

#include using namespace std;

typedef long long ll;

const ll inf=1e18;

const int n=1e2+10;

ll f[20][n][n],g[2][n];

int n,l;

int main()

{ int t;

scanf("%d",&t);

while(t--)

{scanf("%d%d",&n,&l);

for(int i=0;i=0;--i)

{if(l<(1<

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

多重揹包二進位制優化(dp)

本題作為多重揹包二進位制優化模板 思路 乙個數是能用二進位制表達出來的,多重揹包有數量限制且按照常規三個for容易超時,因為第三個迴圈對數量的處理是逐個進行的,比如有10個,那就要執行10次.因此通常我們把數量拆分,比如說10可以分裝成 1 2 4 3,那4是怎麼來的,這個4是二進位制的結束點,10...

統計二進位制數 dp

題目描述 輸入乙個正整數m,請輸出從0到m中每乙個數字二進位制數中含有1的個數的總和,由於數值較大結果需要模100000.輸入格式 乙個m輸出格式 二進位制數中含有1的個數的總和s 輸入輸出樣例輸入2 輸出2輸入5 輸出7說明 提示 樣例說明 20 的資料 m 500 50 的資料 m 1000 7...