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. 注意到转移时不可能由经过障碍后转移到经过障碍前,判掉可以减少大约 \(1/4\) 的无用转移
  2. \(\text{unsigned long long}\) 以减少取模次数
  3. 吸氧 (逃)

T4. ZYT的答案score

考虑换根,在固定某一根的情况下分类讨论各种”答案“的贡献 :

  1. \(x_i = y_i\),以 \(x_i\) 为根时对整棵树有 \(w_i\) 的贡献,否则对以 \(x_i\) 为根的子树有 \(w_i\) 的贡献,在经过 \(x_i\) 时特判修改被影响点的 \(ans\)
  2. \(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\) 处打上修改标记
  3. \(y_i\)\(x_i\) 的祖先,同样设 \(x_i\)\(y_i\) 的子树 \(z_i\) 中,那么当根在以 \(x_i\) 为根的子树时,会对子树 \(z_i\) 以外的点有 \(w_i\) 的贡献,在 \(fa_{x_i}\) 处打上修改标记
  4. \(lca(x_i, y_i)\) 不等于 \(x_i\)\(y_i\),有点像 \(2,3\) 的和,只是起点和贡献点分别在 \(x_i\)\(y_i\) 的子树中,在 \(fa_{x_i}\) 处打上标记

求出原树的 \(DFS\) 序,每次修改就成了区间操作,线段树维护即可

莫名 \(RE 75\) 差评!

posted @ 2020-11-19 20:52  buzzhou  阅读(132)  评论(0)    收藏  举报