速通南宁市大学生程序设计竞赛暨中小学生程序设计邀请赛(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}\),于是
在 \(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}\))。