状态压缩 LIS
LIS
LIS(最長上升子序列),nlogn的方法是維護一個數組,每次插入一個數字,插入到第一個大于等于這個數的位置上, 這樣能保證后面的數盡可能多的插入數組中
狀態壓縮
如果已知LIS最長為10個, 那么我們就可一個用狀態壓縮的方法模擬nlogn的思路計算LIS,這樣每個LIS的狀態也能用一個數字保存下來
int update(int pos, int x) {// 在之前存在的數字中找到第一個大于等于的數, 刪除for (int i = pos; i <= 9; ++i) {if (x & (1 << i)) {x ^= (1 << i);break;}}// 插入這個數return x | (1 << pos); }總結
- 上一篇: LCA 最近公共祖先(RMQ、树上倍增、
- 下一篇: ZOJ-3494 BCD Code (a