速通南宁市大学生程序设计竞赛暨中小学生程序设计邀请赛(NNCPC2024)

A

直接输出“南宁市大学生程序设计竞赛暨中小学生程序设计邀请赛”即可。

B

直接输出两个 \(\frac{n}{3}\) 即可。

C

显然符合条件的只有可能是一个点或一个边(因为要把树分成大小相同的两半),于是找到符合条件的点或边,删掉之后跑树哈希判同构即可。

D

按题意模拟即可。

E

计算 \(x^y\) 使用快速幂即可。计算 \(\frac{x}{y}\),求出乘法逆元 \(y^{-1}\pmod{10^9+7}\) 后计算 \(x\times y^{-1}\pmod{10^9+7}\) 即可。

F

队友做的,不清楚具体做法。对于每个询问,暴力遍历定位询问位置,再暴力往下统计直到文件层数小于等于询问即可。

G

计算 \(x^2+y^2+z^2\) 即可。

H

\(\mathcal{O}(n^2)\) 枚举断点,再使用前缀和计算即可。

I

\(2k\to k+1,2k+1\to k\),稍作变换可以发现 \(3k+1\to 6k,3k\to 6k+1\),于是模 \(3\)\(0,1\) 的均可以变回 \(1\),其余均不能。

J

队友做 F 时想出来的神秘结论:令 \(a_i=\text{occ}(i,1,n)\),实际上只需要找到一对 \(a_i,a_j\) 使得 \(\max_{0\le x\le a_i,0\le y\le a_j}x\oplus y\) 最大即可,证明似乎可以使用调整法。显然选最大的两个 \(a\) 一定不劣。不会位运算,于是将 \([0,a_i]\) 加入一个 01trie,对每个 \(0\le x\le a_j\) 询问异或极值即可。

K

\(f_i\) 表示有 \(i\) 个物品时先手(\(1\))还是后手(\(0\))取最后,则 \(f_i=\max(f_{i-2},f_{i-3})\oplus1\),显然构成 \(1,1,0,0,0\) 的循环节。

L

按时间戳从大到小枚举,取当前时间戳操作并集的补集,将补集内的元素的答案暂时赋值为当前时间戳减一。显然补集中的区间个数总数是 \(\mathcal{O}(q)\) 左右的,于是可以使用线段树完成区间赋值。取操作并集,可以将操作区间按左端点排序,看当前并集最右边的区间与遍历到的区间是否相交即可。

M

首先需要知道,若 \(\gcd(a,b)=1\),则 \(\{a\bmod b,2a\bmod b,\ldots,ba\bmod b\}=\{0,1,\ldots,b-1\}\)

证明:若存在 \(ia\bmod b=ja\bmod b\),则 \((i-j)a\bmod b=0\),由 \(\gcd(a,b)=1\)\(i-j\bmod b=0\),显然在上述集合中不存在这样的 \(i,j\)

又因为 \(\lfloor{\frac{i}{j}}\rfloor=\frac{i-i\bmod j}{j}\),于是

\[\begin{aligned} \sum_{k=1}^{p_1}\lfloor{\frac{kp_2}{p_1}}\rfloor&=\sum_{k=1}^{p_1}\frac{kp_2-kp_2\bmod p_1}{p_1}\\ &=\frac{\sum_{k=1}^{p_1}kp_2-kp_2\bmod p_1}{p_1}\\ &=\frac{\sum_{k=1}^{p_1}kp_2-(k-1)}{p_1}\\ &=\frac{p_2\frac{p_1(p_1+1)}{2}-\frac{p_1(p_1-1)}{2}}{p_1}\\ &=\frac{p_2(p_1+1)-(p_1-1)}{2} \end{aligned} \]

\(p_1\neq p_2\) 时成立。

\(p_1=p_2\) 时显然有 \(\sum_{k=1}^{p_1}\lfloor{\frac{kp_2}{p_1}}\rfloor=\frac{p_1(p_1+1)}{2}\),于是利用逆元计算即可(注意预处理 \(2^{-1}\pmod{10^9+7}\))。

posted @ 2024-11-23 23:02  aeiouaoeiu  阅读(58)  评论(0)    收藏  举报