专栏文章

题解:P5177 签到

P5177题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@minm1tbh
此快照首次捕获于
2025/12/02 04:37
3 个月前
此快照最后确认于
2025/12/02 04:37
3 个月前
查看原文
个人感觉还是挺简单的
作为一个彩笔,肯定没有大佬那么聪明的智慧,所以我先对式子进行了变形。
i=1nj=1i1ij[j,i]\sum_{i = 1}^n\sum_{j = 1}^{i - 1} i \oplus j \in [j, i]
很自然的感觉,应该对于一个 ii,后面的的 j=1i1ij[j,i]\sum_{j = 1}^{i - 1} i \oplus j \in [j, i] 应该存在一个式子可以等价。
因为是异或操作很容易想到观察二进制。
首先发现如果 iijj 存在相同的位数(这里指的是二进制下的)。那么无论如和 iji \oplus j 的这一位都是零,肯定无法 j\ge j。所以对于 jj,位数一定小于 ii。而后我们再往下考虑下一个一,如果这一位填了一,那么之后的所有都可以随便填,假如这是第 xx 位,那么贡献为 2x2^x,之后也是,所以一个数的贡献是 i2high(i)i - 2^{high(i)}
2i=1n(i2high(i))2\sum_{i=1}^n\big(i-2^{high(i)}\big)
hp(i)=2high(i)hp(i)=2^{high(i)}
2i=1n(ihp(i))=2(i=1ni    i=1nhp(i)).2\sum_{i=1}^n\big(i- hp(i)\big) =2\Big(\sum_{i=1}^n i \;-\; \sum_{i=1}^n hp(i)\Big).
原式化为
n(n+1)    2i=1nhp(i).\boxed{\,n(n+1)\;-\;2\sum_{i=1}^n hp(i)\,}.
剩下的核心问题是计算 Shp(n)=i=1nhp(i)S_{hp}(n)=\sum_{i=1}^n hp(i)
m=log2nm = \lfloor \log_2 n \rfloor,即满足
注意:在区间 [2k,2k+11][2^k,2^{k+1}-1] 上的每个整数的最高位对应的 hp(i)hp(i) 都等于 2k2^k。该区间包含的整数个数是 2k2^k。因此,这一整段对和的贡献为
(个数 2k)×(每个 hp=2k)=2k2k=4k.(\text{个数 }2^k)\times(\text{每个 }hp=2^k)=2^k\cdot 2^k = 4^k.
把所有完整的区间从 k=0k=0 算到 k=m1k=m-1,再加上最后不满的那一段(最高位为 2m2^m 的数):
  • 对于 k=0,1,,m1k=0,1,\dots,m-1:贡献总和为 k=0m14k\sum_{k=0}^{m-1}4^k
  • 对于最高位为 2m2^m 的那段:这些数是从 2m2^mnn,共有 n2m+1n-2^m+1 个,每个的 hphp 都是 2m2^m,贡献为 2m(n2m+1)2^m\cdot (n-2^m+1)
因此
i=1nhp(i)=k=0m14k  +  2m(n2m+1).\boxed{\,\sum_{i=1}^n hp(i)=\sum_{k=0}^{m-1}4^k \;+\; 2^m\big(n-2^m+1\big)\,}. k=0m14k=k=0m14k=4m141=4m13\sum_{k=0}^{m-1}4^k=\sum_{k=0}^{m-1}4^k=\frac{4^m-1}{4-1}=\frac{4^m-1}{3}
因此
i=1nhp(i)=4m13  +  2m(n2m+1)\boxed{\,\sum_{i=1}^n hp(i)=\frac{4^m-1}{3} \;+\; 2^m\big(n-2^m+1\big)\,}

评论

2 条评论,欢迎与作者交流。

正在加载评论...