2020.11.21提高组模拟
2020.11.21【NOIP提高A组】模拟
一套好题 (第一句话奇奇怪怪不知所云),调完 \(T1\) 发现 \(10:30\) 当场心态爆炸,还剩差不多一个小时后三题还基本没想唔,最后只能草草暴力结尾。
结果后一个半小时拿了 \(135 ptes\)?!(\(T3\) 暴力 + 记忆化水过了感谢数据感谢数据),最近几套模拟赛都是最后两小时得分多(危危危),要改要改要改。
T1. 6879 T1 出了个大阴间题(repair)
首先有个很显然的结论:任何一个排列 \(A_{max}\) 的最大值只可能是排列中的 \(a_{max}\) 或 \(a_{max + 1}\),
以及我们发现,任意排列的 \(b\) 只与排列长度有关,长度为 \(i\) 的排列的 \(b_i = 2 b_{i - 1} + 1\)。
所以便可以设状态 \(f[s][0/1]\) 表示选择的二元组的状态为 \(s\),\(A_{max} = a_{max} / a_{max} + 1\) 的所有排列的合并代价总和。为了转移,同时需要一个 \(g[s][0/1]\) 存储不同排列的方案数。
考虑怎样才能转移到 \(f[s][1]\),想一想可以知道取 \(+1\) 的充要条件当前排列紧接着选了 \(a_i = a_{max}\),否则就转移到 \(f[s][0]\),其它比较简单,不赘述了。
T2. 6880 T2 最简单辣快来做(satellite)
首先考虑一个很 \(naive\) 的想法:考虑将绝对值拆开,对于每一个位置 \((i, j)\),对其左上、左下、右上、右下四个方向分别做一遍二维前缀和,最后合并起来可以 \(O(1)\) 得到答案。
这么做是肯定过不了的,但是我们可以发现,显然有很多位置都是没有必要做前缀和的,但哪些位置是必要的呢?
对于每个卫星 \((x_i, y_i)\) 对应的用 \(x = x_i, \ y = y_i\) 分割平面,可以发现交点是 \(O(n^2)\) 级别的,而这些交点位置也正是必要的,对 \(n^2\) 个位置做二维前缀和,查询答案时,由于难以使用逆元,所以将查询点四个方向上的最近的关键点的前缀和合并,可以发现正样子合并不会少算或多算任何一个卫星,所以正是答案。
T3. 6881 T3 是我的你不要抢(string)
\(Solution1\)
数据很水,所以直接暴力 + 记忆部分答案可以水过去(此题打开 \(o2\) 编译开关)
\(Solution2\)
”这题出的不是很好“ ——出题人
因为此题可以平衡规划,发现长度大于等于 \(\sqrt{L}\) 的串只有 \(O(\sqrt{L})\) 个,直接枚举暴力匹配,将答案存下来即可。
对于长度小于 \(\sqrt{L}\) 的串,直接暴力匹配。
时间复杂度 \(O((L + Q) \sqrt{L})\)
\(Solution3\)
不会吧不会吧不会还有人想看正解吧。好吧其实是我暂时也不会 (逃)。
T4
题目都懒得打了表示太神奇看不懂。

浙公网安备 33010602011771号