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