給定乙個序列an,下標從1開始直到n,定義了以下式子:
現在要求下式的值:
小提示:
樣例解釋:
這裡考察的是異或操作。
首先注意到異或是支援交換律的,可將待求解的值分為兩個部分:將ai全部交換到一起求出異或值,這是由輸入序列確定的部分結果;還剩下乙個n×n的餘數矩陣,它們整體異或到一起構成輸入序列個數確定的部分結果。
輸入序列的異或結果十分簡單,遍歷一次輸入序列,取出相異或即可,但剩下的餘數矩陣如何處理?
再次注意到,餘數矩陣在列方向上是有週期規律的:第一列是0的迴圈序列,第二列是1,0的迴圈序列,第三列是1,2,0的迴圈序列,第四列是1,2,3,0的迴圈序列,……第n列是1,2,3……n-1,0的迴圈序列。
那麼先將列方向的餘數相異或,第i列,偶數次迴圈序列相異或的結果都是0,可以抵消掉,剩餘的就有單個1,2……i-1,0 序列、不完整的序列 以及單個多餘的1,2……i-1,0 和乙個不完整序列 1,2,……的組合這三種情況,恰好我們能夠根據列序號 i和總列數 n的相對關係知道是何種剩餘情況。
csdn
這裡求餘數矩陣單列異或結果的時間複雜度是 o(1) 的,求 n 列餘數矩陣異或結果時間複雜度是o(n)的,而求解 ai 異或時間複雜度是 o(n) 的,因此整個解法是 o(n) 的。
public
class
solution
//剩餘不足乙個序列
else
}return bn;
}private
intxorfrom0ton
(int n)
}
通過測試用例57%,報錯執行超時,因此可能有特殊用例沒有考慮到。 2020屆秋招中興筆試題
在本人堅持不懈的努力刷題下,終於發現題目的 了。leetcode題目為 49.字母異位詞分組,有興趣的同學可以對比學習。題目的大致意思是 超市賣東西,然後統計那些商品相同的組合。例如 abcd 與 bacd 是不同商品的組合,可以歸於同乙個類別 要求統計出,出現次數多於一次的商品組合類別,有助於幫助...
筆試 浪潮集團2020秋招研發卷
第1題 更新遞增1子串行的長度 num 1 cout n maxr endl system pause 通過率為91 第2題 python版本 intput 1 raw input intput 2 map int,raw input split dict1 dict2 for i in range...
2023年騰訊秋招筆試題 2020 08 22
給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10,程式應該輸出結果為2。共有兩對質數的和為10,分別為 5,5 3,7 include include include using namespace std const long lon...