GF集训 PB 杂题

数轴上有 n 个带颜色的点,你要用尽可能多的不相交的曲线连
接它们,满足每条曲线都连接两个颜色不同的点,且都在数轴上
方。
构造方案。

这种联线问题,放到环上,形态不变。

首先把限制转化为相邻颜色都不相同,考虑对一段连续相同颜色段,只保留最后一个,剩下的和连续段前面的哪个点连边即可完成构造。
然后考虑每次选三个相邻的颜色不同的点a,b,c,连成三角形,相当于删除了b,一直这样做直到只剩下三种颜色并且第三种颜色只有一种,那一种颜色向其他所有颜色连边,然后其他颜色相邻的连一圈即可。


图片

首先分类讨论

图片
l,r互不相等,所以可以直接求最大匹配。

空间卡到了16MB,所以要使用一种奇怪的技巧,用bitset存邻接矩阵,代码可以这样写


for(int v=g[u]._Find_first();v<=T&&flow;v=max(v+1,(int)g[u]._Find_next(v))){


图片

重庆就讲过的一道题了。


图片

这样做之后只需要循环移位即可。


图片

考虑并建模,格子看成点,涂色看成x行向y列连边

图片

由于共有 2n 个点,已经连了 2n 条不相同的边,则已经连的边一定至少形成一个长度为偶数的环。考虑通过这个环构造答案。

因为整个环上边的颜色都不相同,所以不论新连的边是什么颜色,左右两个环都至少有一个满足环上边的颜色互不相同。选择满足该条件的一侧,重复上述操作,最终一定会得到一个大小为 4 的环。

posted @ 2025-08-13 09:05  Dreamers_Seve  阅读(6)  评论(0)    收藏  举报