XHXJ s LIS 數字狀壓好題

2021-10-23 14:51:43 字數 1799 閱讀 9041

題目傳送門 首先你

要會nl

ogn的

上公升子序

列首先你要會nlogn的上公升子串行

首先你要會n

logn

的上公升子

序列 然後考

慮怎樣保

存前面的

上公升子序

列信

息然後考慮怎樣儲存前面的上公升子串行資訊

然後考慮怎樣

儲存前面

的上公升子

序列資訊直接

存肯定吃

不消,考

慮狀態壓

縮直接存肯定吃不消,考慮狀態壓縮

直接存肯定吃

不消,考

慮狀態壓

縮 因 為最

多是[0

,9]的

10個數字

,所以用

第i位二

進製表示

i是否在

上公升子序

列中

因為最多是[0,9]的10個數字,所以用第i位二進位制表示i是否在上公升子串行中

因為最多是[

0,9]

的10個

數字,所

以用第i

位二進位制

表示i是

否在上公升

子串行中如果

當前位選

了x,按

照nlo

gn的上

公升子串行

求法

如果當前位選了x,按照nlogn的上公升子串行求法

如果當前位選

了x,按

照nlo

gn的上

公升子串行

求法 如果x

是當前序

列最大的

,直接填

充就好了

如果x是當前序列最大的,直接填充就好了

如果x是當前

序列最大

的,直接

填充就好

了 否 則,

去序列二

分乙個第

乙個比自

己大的數

替換(潛

力更大)

否則,去序列二分乙個第乙個比自己大的數替換(潛力更大)

否則,去序列

二分乙個

第乙個比

自己大的

數替換(

潛力更大

) 這 裡只

有9位數

,直接從

小到大遍

歷即

可這裡只有9位數,直接從小到大遍歷即可

這裡只有9位

數,直接

從小到大

遍歷即可這樣

就是最優

的上公升子

序列,而

且不會對

之後產生

影響,而

且能用d

p陣列存

下來

這樣就是最優的上公升子串行,而且不會對之後產生影響,而且能用dp陣列存下來

這樣就是最優

的上公升子

序列,而

且不會對

之後產生

影響,而

且能用d

p陣列存

下來 開始d

p吧

開始dp吧

開始dp

#include using namespace std;

#define int long long

int k,dp[20][1<<10][11],a[20];

int getnum(int mask)

return ans;

}int up(int mask,int r)

}

狀壓dp幾道題

感覺現在只會用比較無腦比較暴力的狀壓dp,完全沒思考,就是列舉所有的狀態,等集訓結束了搜點要努力想dp方程的題做做。hdu3681 prison break 大體意思就是給了張地圖,走路要耗費能量,有能量池能補充能量,求要走完特定的幾個點初始能量的最小值 因為給的點很少所以可以用狀壓dp,走過的各自...

狀壓DP入門題

學習狀壓之前必須要熟練掌握位運算 位運算名 符號效果 and 按位與如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 l or 按位或兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 xor 按位異或 單身狗操作 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 一元運算子,...

狀壓DP入門題集錦

poj 3254corn fields 題意 一塊n m的田,1表示這個地方可以種植,0代表這個地方不能種植。植物種植還必須滿足兩株植物不能相鄰 橫豎都不行 問共有幾種種植方法,而且當什麼都不種時認為是一種方法。解題思路 種植用1表示,不種植用0表示。每一行的情況就可以用乙個二進位制數state來儲...