退役前的做题记录1.0 すべては自分のオナニーにすぎない

最近一直沉浸在悲伤地氛围中,\(xgzc\)签约后压力骤增,要开始认真了-_-.

CF1276 D. Tree Elimination

考虑树型\(dp\),设\(f_{u,0/1/2/3}\)分别表示点\(u\)被自己父亲边之前的边覆盖了,被自己父亲覆盖了,被自己父亲边之后的边覆盖了以及没有覆盖.

那么这个怎么转移?

下面规定小于号就是出现在\(v\)前面的意思.

考虑一个点的\(f_{u,0}\)的转移:

显然对于选的那个儿子不能在选这条边之前被选(不然就选不了),那么就是\(f_{v,2/3}\).
这个儿子前面的儿子一定要选,不然这条前面儿子对应的边就不合法.
这个儿子后面的儿子可以选也可以不选,但是不能选父亲,因为父亲已经被匹配了.
综合起来就是:
\[ f_{u,0}=f_{v,2/3}*\prod_{p<v}f_{p,0/1}*\prod_{p>v}f_{p,0/2/3} \]
\(f_{u,2}\)的转移类似.

考虑\(f_{u,1}\)的转移,那么有:

对于前面的儿子一定不能选2,3.
对于后面的儿子一定不能选父亲.
综合起来就是:

\[ f_{u,1}=\prod_{son<fa_u}f_{son,0/1}*\prod_{son>fa_u}f_{son,0/2/3} \]

\(f_{u,3}\)则等价于前面的都不能选\(2/3\),所以转移就很明了了.

代码

「LibreOJ β Round」ZQC 的拼图

考虑将模型转换,即:

先考虑取的顺序(其实想一想就发现与顺序无关,不然\(dp\)也不好搞),那么就可以最优化的得到:

  1. \(x_i \le x_{i+1},y_i \le y_{i+1}\)
  2. \(a_i\Delta x+b_i\Delta y \le K\)

然后就可以二分+\(dp\)了,用前缀\(max\)可以优化到\(O(nm^2log\ a)\)

代码

「LibreOJ NOI Round #1」接竹竿

sb题,首先可以写出一个\(O(n^2)\)的转移方程,然后直接记一个最大值即可.

\(n^2\)代码 100pts代码

猜你喜欢

转载自www.cnblogs.com/fexuile/p/12093886.html