LOJ 2244 起床困難綜合症

2022-04-30 09:45:17 字數 1883 閱讀 7640

解:m = 0的部分分,直接模擬。有and 0的部分分,直接模擬。<=1000的部分分,列舉攻擊力之後模擬。所有操作相同的部分分,可以合併成只有乙個操作。然後列舉m或者逐位貪心。

正解是逐位貪心,內層跑一遍1~n個操作。然後後面這個1~n其實可以優化,在外層用00000...0和11111...1來一次性搞完即可。

1 #include 2

3const

int n = 100010;4

5int

a[n], opt[n], n, m;

6char str[5]; ///

0 and & 1 or | 2 xor ^78

namespace

m0 15

else

if(opt[i] == 1

) 18

else

if(opt[i] == 2

) 21

}22 printf("

%d\n

", ans);

23return;24

}25}26

27namespace

bf 36

else

if(opt[j] == 1

) 39

else42}

43 ans =std::max(ans, x);44}

45 printf("

%d\n

", ans);

46return;47

}48}49

50namespace

same

57else

if(opt[i] == 1

) 60

else63}

64int ans = 0;65

if(m <= 100000

) 70

else

if(opt[1] == 1

) 73

else

if(opt[1] == 2

) 76}77

}78else85}

86else

if(opt[1] == 1

) 90}91

else95}

96}97if(opt[1] == 0

) 100

else

if(opt[1] == 1

) 103

else

106}

107 printf("

%d\n

", ans);

108return

;109

}110

}111

112int

main()

122if(i > 1 && opt[i] != opt[i - 1

]) 125

}126

127if(!m ||flag1)

131if(n <= 1000 && m <= 1000

) 135

if(flag2)

139140

int ans = 0, now = 0

;141

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

148else

if(opt[j] == 1

) 152

else

156}

157if

(t0)

160else

if(t1 && (now | (1

<< i)) <=m)

164}

165 printf("

%d\n

", ans);

166return0;

167 }

ac**

998 起床困難綜合症

本題是讓我們選擇 0,m 之間的乙個整數x,經過給定的n次位運算,使結果ans最大。位運算的主要特點之一是在二進位制表示下不進製。正因為如此,在x可以任意選擇的情況下從,參與位運算的各個位 bit 之間是獨立無關的。換言之,對於任意的k 0 k 30 ans的第k位是幾 只與 x的第k位是幾 有關,...

BZOJ3668 起床困難綜合症

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

codevs3311 起床困難綜合症

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