2020.11.19提高组模拟
2020.11.19【NOIP提高A组】
高二学长说”今天300+没手都行“,然而我......
T1. 二次剩余two
转换一下式子 \(2mx - (m^2 + k) \geq x^2 - t\),于是就可以开心的动态维护上凸壳啦!逃
不会吧不会吧不会真的有人会动态维护上凸壳吧,至少我不会
发现 \(t \leq 10^5\),观察原式 \((x - m)^2 + k \leq t\), \((k \geq 1)\),所以当 \(|x - m| \geq \sqrt{t}\) 时,式子不成立。
把每个二次函数挂在对称轴上,每次删除 \(\sqrt{t}\) 个对称轴上的二次函数,用堆(或偷懒用 \(set\))维护对称轴上二次函数即可。
T2. 倍数区间interval
设 \(L_i, R_i\) 表示 \(i\) 分别能往左/右扩展到的端点。
若 \(a_i | a_j\),则 \(L_i\) / \(R_i\) 可以继承 \(L_j\) / \(R_j\),反之 \(i\) 一定扩展不到 \(j\)。
正反扫两遍求出 \(L_i, R_i\),栈简单维护即可。
注意统计答案时不要算重区间
T3. 飞翔的鸟bird
设 \(f[i][j][0/1]\) 表示到第 \(i\) 行 \(j\) 列,是否经过障碍的方案数。转移简单。
压掉第一维,将二三维压乘一维,发现矩阵乘法优化 \(dp\) 即可,注意:由于每次从不经过障碍转移到经过障碍实际上转移了两列,所以矩乘只做 \(n - 2\) 次。
出题人卡常差评!分享三种卡常方法(适用此题):
- 注意到转移时不可能由经过障碍后转移到经过障碍前,判掉可以减少大约 \(1/4\) 的无用转移
- 开 \(\text{unsigned long long}\) 以减少取模次数
- 吸氧
(逃)
T4. ZYT的答案score
考虑换根,在固定某一根的情况下分类讨论各种”答案“的贡献 :
- \(x_i = y_i\),以 \(x_i\) 为根时对整棵树有 \(w_i\) 的贡献,否则对以 \(x_i\) 为根的子树有 \(w_i\) 的贡献,在经过 \(x_i\) 时特判修改被影响点的 \(ans\)
- \(x_i\) 是 \(y_i\) 的祖先,设 \(y_i\) 在 \(x_i\) 的子树 \(z_i\) 中(\(x_i \rightarrow z_i \rightarrow ... \rightarrow y_i\)),那么当根在子树 \(z_i\) 以外时,对以 \(y_i\) 为根的子树有\(w_i\)的贡献,可以 \(z_i\) 处打上修改标记
- \(y_i\) 是 \(x_i\) 的祖先,同样设 \(x_i\) 在 \(y_i\) 的子树 \(z_i\) 中,那么当根在以 \(x_i\) 为根的子树时,会对子树 \(z_i\) 以外的点有 \(w_i\) 的贡献,在 \(fa_{x_i}\) 处打上修改标记
- \(lca(x_i, y_i)\) 不等于 \(x_i\) 或 \(y_i\),有点像 \(2,3\) 的和,只是起点和贡献点分别在 \(x_i\) 与 \(y_i\) 的子树中,在 \(fa_{x_i}\) 处打上标记
求出原树的 \(DFS\) 序,每次修改就成了区间操作,线段树维护即可
莫名 \(RE 75\) 差评!

浙公网安备 33010602011771号