ABC238 Editorial
A - Exponential or Quadratic
题意
给定一个 \(n\),问 \(2^n>n^2\) 是否成立。
分析
手搓样例,发现只有 \(2,3,4\) 不满足条件,输入输出题。
B - Pizza
题意
不好描述……
分析
暴力搓出所有切刀的地方,随便算。时间复杂度 \(\mathcal O(n)\),语法入门题。
C - digitnum
题意
定义 \(f(x)\) 为十进制下和 \(x\) 位数相同的数的数量,求 \(\sum_{i=1}^nf(i)\bmod 998244353\)。
分析
考虑对于位数为 \(m\) 的 \(f(i)\) 之和为 \(1+2+\dots+9\times 10^{m-1}\),公式套上 \(O(1)\) 算。所以对于所有位数比 \(n\) 小的数可以直接公式算,对于最后一部分贡献,将 \(m\),从定义成 \(10^{m-1}\),贡献就是 \((n-m+2)(n-m+1)\over 2\)。
复杂度 \(\mathcal O(\log_{10}n)\)。
D - AND and SUM
题意
给定 \(a,s\),问是否存在 \(x,y\) 满足:\(x\ \text{AND}\ y=a,a+b=s\)。
分析
首先考虑 \(a\) 中二进制位为 \(1\) 的位置,\(x,y\) 肯定都是 \(1\),先从 \(s\) 中减掉。对于剩下的部分显然 \(x,y\) 在每一位上最多有一个 \(1\),所以直接考虑剩下的 \(s\) 是否每个二进制位都对应一个 \(a\) 二进制位为 \(0\) 的位置。
复杂度 \(\mathcal O(T\log n)\)。
E - Range Sums
题意
假设你知道 \(m\) 个限制 \(\sum_{i=l}^ra_i\) 为某个定值,能否算出 \(\sum_{i=1}^na_i\)?
分析
考虑如果这些限制能完美的无重叠的覆盖 \([1,n]\),那就直接结束了,写个并查集维护一下,正确性不会证?
复杂度 \(\mathcal O(n)\)。
F - Two Exams
题意
给定 \(n\) 个点,每个点有两个属性 \((a_i,b_i)\),要求从中选 \(m\) 个点满足不存在 \((x,y)\) 满足 \(x\) 被选中,\(y\) 没被选中,且 \(a_x>a_y,b_x>b_y\)。
分析
考虑排序再算显然不影响正确性,所以先按 \(a\) 排序。考虑能否选一个点 \(i\),充要条件是前面没被选中的点 \(b\) 属性的最小值 \(mn<b_i\)。
看到数据范围 \(n\leq300\) 就直接上暴力 dp,设 \(f_{i,j,k}\) 表示前 \(i\) 个点,选了 \(j\) 个,其中没被选的 \(b\) 属性最小值为 \(k\)。转移考虑下一个数 \(b_{i+1}\) 与 \(k\) 的关系,很好写。复杂度 \(\mathcal O(n^3)\)。
G - Cubic?
题意
给定长度为 \(n\) 的序列 \(\{a_n\}\),每次询问 l r
,输出 \(\prod_{i=l}^ra_i\) 是否是一个完全立方数。
\(n,q\le2\times10^5,a_i\le10^6\)。
分析
考虑一个很简单的想法,如果对于每一种质因子,\([l,r]\) 内的该因子的数量均为 \(3\) 的倍数显然有解,反之无解。但是因子数目太多,会 TLE
。
考虑到很多大因子世界上根本没用到,可以进行优化。每个 \(a_i\) 能被分成若干 \(\le10^3\) 的因子和至多一个 \(\ge10^3\) 的因子。
- 对于 \(\le10^3\) 的部分,我们统计前缀和,每次询问暴力判断,总共 \(168\) 个因子,这部分复杂度 \(\mathcal O(168q)\)。
- 对于 \(\ge10^3\) 的部分,每个数之多一个这种因子,所以单步转移是 \(\mathcal O(1)\),启示我们用莫队,复杂度 \(\mathcal O(q\sqrt n)\)。
总复杂度 \(\mathcal O(q(k+\sqrt n))\),其中 \(k=168\)。