998 起床困難綜合症

2022-07-26 07:42:10 字數 932 閱讀 7727

本題是讓我們選擇[0,m]之間的乙個整數x,經過給定的n次位運算,使結果ans最大。

位運算的主要特點之一是在二進位制表示下不進製。正因為如此,在x可以任意選擇的情況下從,參與位運算的各個位(bit)之間是獨立無關的。換言之,對於任意的k(0<=k<30),「ans的第k位是幾」只與「x的第k位是幾」有關,與其他位無關。所以我們可以從高位到低位,依次考慮x的每一位填0或者填1。

x的第k位應該填1,當且僅當同時滿足以下兩個條件:

1.已經填好的更高位數構成的數值加上1如果不滿足上述條件,要麼填1會超過m的範圍,要麼填1不如填0更優。這種情況下令x的第k位為0顯然更好。確定x的每一位,自然可以得到ans的值

#includeusing namespace std;

int n,m;

paira[100005];

int calc(int bit,int now)

return now;

}int main()

int val=0,ans=0;

for(int bit=29;bit>=0;bit--)

cout<

return 0;

}

BZOJ3668 起床困難綜合症

description 21 世紀,許多人得了一種奇怪的病 起床困難綜合症,其臨床表現為 起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因 在深邃的太平洋海底中,出現了一條名為 drd 的巨龍,它掌握著睡眠之精髓,能隨意...

codevs3311 起床困難綜合症

題目 wwq 這題你居然沒一眼切?嗯 二進位制列舉 判斷不超過m的二進位制數的每一位是1更優還是0更優 顯然同時滿足我們要放0 為了便於判斷大小,從高位到低位列舉 複雜度 2 n log m include include include include define ll long long us...

NOI2014 起床困難綜合症

noi2014 起床困難綜合症 又刷了一道水題qwq 它給你n扇門,每扇門都有乙個值和乙個操作,這個操作為or and xor之間的某乙個。你需要從m中任意選取乙個數,使得這個數依次經過n扇門之後的值最大。n是1e5的,m是1e9的,如果你直接暴力列舉每乙個數,求最大值,複雜度顯然是1e14的,了。...