JOISC2020补题记

Day1

T1 建筑装饰4

不难想到暴力dp
\(f[i][0/1][j]\)表示当前插入了\(i\)个数,末尾是A/B,有\(j\)个A中的数是否可行

暴力转移时间复杂度\(O(n^2)\)

尝试压状态

打表发现dp值可行的j是连续段

时间复杂度变为\(O(n)\)

code

T2 汉堡肉

据说正解是分类讨论+线段树优化建图+2sat?

写的比较流行的随机化

random_shuffle后取前四个矩形分别作为四个点的范围

然后依次加入矩形,判断与当前四个矩形哪个交集大就与哪个合并在一起

玄学可过

code

T3 扫除

神仙数据结构

先考虑没有插入的情况

注意H或者V操作只会对某一维造成影响

想到对每一维分开搞

但是H操作和F操作会有相互影响

举个例子

假设你当前有一个H操作要横着推

但是有一个覆盖范围很短但是推得距离很长的F操作竖着推走了你H操作要推的一部分灰尘

这个时候你的H操作的覆盖范围就会改变,是一个区间取max的操作

于是我们可以维护出所有H和F操作在自己一维坐标的覆盖范围

发现所有的区间要么不交要么共左端点

于是就可以两维分开处理按覆盖长度排序倒序加入取max就好了

如果要动态插入直接线段树分治解决就好了

code

Day2

T1 交互题先咕着

T2 有趣的 Joitter 交友

set启发式合并

维护一个点的出入,所在连通块的出入和点集

插入一组关系就可以在set里查一下是否会产生新关系

总添加数量是\(O(n)\)的复杂度有保障

分类讨论有点繁琐

code

T3 遗迹

今晚做

猜你喜欢

转载自www.cnblogs.com/deaf/p/13205255.html