2017西安交大ACM小学期 有趣异或[Trie树]
生活随笔
收集整理的這篇文章主要介紹了
2017西安交大ACM小学期 有趣异或[Trie树]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有趣異或
發布時間: 2017年7月4日 23:59?? 最后更新: 2017年7月5日 14:56?? 時間限制: 1500ms?? 內存限制: 512M
描述給定n個非負整數,保證這些數兩兩不相同?,F給定x,請從中選2個不同的數a,b,使得a^b^x最大。
包含多組測試數據。
每組測試數據第一行有1個正整數和1個非負整數,分別為n和x。
接下來一行有n個正整數。
所有數據滿足n≤106,所有非負整數以及x小于等于109。
總數據量∑n≤106。
對每組數據輸出一行1個整數,表示a^b^x的最大值是多少。
樣例輸入1?復制 3 0 1 2 3 樣例輸出1 3首先,我們把所有的整數對應的二進制前面補0,補成30位的二進制數,然后把這串二進制數當成字符串,存入Trie樹中。
其次,我們遍歷所有的數a,然后我們尋找b,使得a^b^x最大
我們這樣分析,當a和x確定時候a^x也就確定了設a^x = t
那么欲使t^b最大,那么t與b的相同的位上,值應該盡可能的不同,所以,我們依據t的位,在Trie中尋找b。。。
這里有一個坑點,那就只注意a和b不能相同,如果數據是x = (1111111....)b的話,那么樸素的求會找到與a相等的b,這顯然是錯誤的
因此,可以用一個標記,代表當前搜索到的Trie樹位置是否可能得到與a相等的b,搜索時候注意就好了。
代碼:
總結
以上是生活随笔為你收集整理的2017西安交大ACM小学期 有趣异或[Trie树]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米 14 Pro 手机现身 Geekb
- 下一篇: 2017西安交大ACM小学期 美妙音乐[