題意:
要排乙個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...