关于数论的一些小震撼
按照题目进行总结哦AvA
牛客网寒假竞赛2
F
首先我们知道如果有 \(x \oplus y = c\) 就有 \(x \oplus c = y\),这是异或(xnor)的特性
除此之外我们还可以知道 \(x + y = x \oplus y + 2 (x \& y)\),相当于把进位分开来
那么就有\(x \oplus c \le x + c \implies y \le x + c \implies c > y - x \implies x \oplus y \ge \left| x - y \right|\)
便于理解的说法就是,异或就是不进位的加法,也是不退位的减法,所以\(x + y \ge x \oplus y \ge \left| x - y \right|\)
H
自然数k次方求和递推公式:\(S_{k}(n) = (n+1)S_{k-1}(n)- \sum_{i = 1}^{n} S_{k-1}(i)\)
常用的有:
\[\sum i^2 = \frac{n(n+1)(2n+1)} 6
\]
\[ \sum i^3 = [\frac{n(n+1)} 2]^2
\]
\[ \sum i^4 = \frac{n(n+1)(6n^3+9n^2+n-1)}{30}
\]
cf 1090
E 试填法(按位贪心)
题目可以化简为求n个数中任意两个数异或的最大值,用试填法可以将时间复杂度降至\(O(NL)\),其中L为二进制位数(此处为32)
从左往右,从最高位开始对答案试填1,第i位之前已经填好之后,对于n个数的第i位,已填好的为ans,此时此处能否填1取决于n个数的前i位异或能否出现(ans|(1<<i)记作cand)cand的高位
而这一步可以通过异或的交换律来解决,将所有的高位存到unordered_map中,遍历数组,要找\(x \^ y = p\)即为找\(x \^ p\)是否在字典中出现,如果出现过就是找到了

浙公网安备 33010602011771号