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\) 的因子。

  1. 对于 \(\le10^3\) 的部分,我们统计前缀和,每次询问暴力判断,总共 \(168\) 个因子,这部分复杂度 \(\mathcal O(168q)\)
  2. 对于 \(\ge10^3\) 的部分,每个数之多一个这种因子,所以单步转移是 \(\mathcal O(1)\),启示我们用莫队,复杂度 \(\mathcal O(q\sqrt n)\)

总复杂度 \(\mathcal O(q(k+\sqrt n))\),其中 \(k=168\)

posted @ 2023-04-27 21:18  JWRuixi  阅读(29)  评论(0编辑  收藏  举报