bzoj 4976 寶石鑲嵌(貪心 高位字首和)

2021-08-18 14:16:00 字數 674 閱讀 4063

傳送門biu~

當n-k>=16時,每一位上的1都可以出現,只需要考慮每位是否有1即可。

剩下的情況n最大只有115(資料範圍瞬間變得友善了)。

令f[state]代表組合出state最少需要多少個數,跑揹包即可。然後再將f[state]更新成組合出包含state這個集合的數最少需要多少個數,列舉每個狀態的子集從大到小更新即可。

計算答案時,從高位到低位貪心,只要f[state]<=n-k,即說明state狀態合法。

#include

#define n 100010

using

namespace

std;

int n,k,ans,a[n],f[n<<1];

int main()}}

printf("%d",ans);

return

0; }

memset(f,0x3f,sizeof f);

f[0]=0;

for(int i=1;i<=n;++i)

}for(int i=(1

<<17)-1;~i;--i)

}for(int i=(1

<<16);i;i>>=1)

printf("%d",ans);

return

0;}

bzoj4976寶石鑲嵌 DP

description 魔法師小q擁有n個寶石,每個寶石的魔力依次為w 1,w 2,w n。他想把這些寶石鑲嵌到自己的法杖上,來提公升 法杖的威力。不幸的是,小q的法杖上寶石鑲嵌欄太少了,他必須扔掉k個寶石才能將剩下的寶石鑲嵌上去。法杖的 威力等於鑲嵌在上面的所有寶石的魔力按位做或 or 運算的結果...

bzoj 4976 寶石鑲嵌 動態規劃

魔法師小q擁有n個寶石,每個寶石的魔力依次為w 1,w 2,w n。他想把這些寶石鑲嵌到自己的法杖上,來提公升法杖的威力。不幸的是,小q的法杖上寶石鑲嵌欄太少了,他必須扔掉k個寶石才能將剩下的寶石鑲嵌上去。法杖的威力等於鑲嵌在上面的所有寶石的魔力按位做或 or 運算的結果,請寫乙個程式幫助小q做出最...

bzoj4976 寶石鑲嵌 亂搞 dp

題目描述 從 n 個數中選出 n k 個,使得它們的二進位制或 or 最大。輸出這個值。輸入第一行包含兩個正整數 n,k 2 le n le 100000,1 le k le 100,k第二行包含 n 個整數 w 1,w 2,w n 0 le w i le 100000 分別表示每個寶石的魔力。輸出...