看到範圍應該想到dfs或者狀壓。
那麼為什麼想狀壓,而不是dfs呢?
首先dfs的話存在大量重複的可能。
就是假設你前面都不一樣,但是到了後面的某一次操作選是一樣的
那其實最後一部分要去計算多次而已,但是跑dfs的話,前面一樣的操作會大量的進行。
dp[sta]表示當前選了的數字的二進位制串為st時候的最大值。
那麼轉移也很簡單,我們從sta這個二進位制串中去掉任意兩個,列舉上乙個二進位制串last
那麼last其實就是sta ^ (1<
}for
(int st=
1;st<
1<}}
}return dp[(1
<];}}
;
N 後0的個數
問題描述 給定引數n n為正整數 請計算n的階乘n!末尾所含有 0 的個數。例如,5!120,其末尾所含有的 0 的個數為1 10!3628800,其末尾所含有的 0 的個數為2 20!2432902008176640000,其末尾所含有的 0 的個數為4。計算公式 這裡先給出其計算公式,後面給出推...
重複N次的元素
在大小為 2n 的陣列 a 中有 n 1 個不同的元素,其中有乙個元素重複了 n 次。返回重複了 n 次的那個元素。示例 1 輸入 1,2,3,3 輸出 3 示例 2 輸入 2,1,2,5,3,2 輸出 2 示例 3 輸入 5,1,5,2,5,3,5,4 輸出 5 4 a.length 10000 ...
統計n!後0的個數
統計0的個數,你只需要統計2 5的個數,然而在該數列中,5的個數遠遠少於2的個數,所以僅僅只需要統計5的個數即可。code include include include include include include using namespace std define ll long long ...