G
N
I
D
A
O
L

关于数论的一些小震撼

按照题目进行总结哦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\)是否在字典中出现,如果出现过就是找到了

posted @ 2026-03-10 13:15  JimmyCoder  阅读(12)  评论(0)    收藏  举报