牛客 - Final Exam(贪心)
生活随笔
收集整理的這篇文章主要介紹了
牛客 - Final Exam(贪心)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接:點(diǎn)擊查看
題目大意:給出 n 個(gè)數(shù)組成的數(shù)組 a ,再給出 q 次詢問(wèn),每次詢問(wèn)給出一個(gè) m ,要求找到一個(gè) k ,使得 ( k ^ a[ i ]?) 之和小于等于 m 且 k 最大,若不存在輸出 - 1
題目分析:首先我們可以按位儲(chǔ)存數(shù)組 a?,這個(gè)第 k 位對(duì)于異或的貢獻(xiàn)就是 2^k 了,接下來(lái)我們可以通過(guò)構(gòu)造一個(gè) k ,使得? ( k ^ a[ i ] ) 之和最小,這樣在每次詢問(wèn)時(shí),如果給出的 m 比最小的?( k ^ a[ i ] ) 之和還要小,那么答案顯然就是 - 1 了,否則的話按位從最高位開(kāi)始貪心就好了,貪心的策略就是當(dāng)前的位如果放置 1 且加上其余位置異或的貢獻(xiàn)依然小于等于 m ,則肯定放 1 ,否則置 0 即可,由于運(yùn)算過(guò)程中可能會(huì)爆 long long ,所以可以暫時(shí)地將其轉(zhuǎn)換為 __int128 進(jìn)行運(yùn)算
代碼:
?
?
總結(jié)
以上是生活随笔為你收集整理的牛客 - Final Exam(贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 牛客 - Strange Bulbs(b
- 下一篇: 牛客 - Across the Fire