20240705总结(欧拉回路,构造)

1|0A - Fair Share

CF1634E Fair Share
题解:用二分图做的。首先如果一种颜色出现奇数次一定无解。

否则对于一种颜色的点分组,每组两个之间连边,保证每种颜色平分。

然后把每一个数组分成n[i]/2组,每组两个之间连边,保证每一个数组平分。

这样一定连出的是二分图,黑白染色

2|0B - Necklace

CF613C Necklace
题解:首先判断答案为0,很显然如果两个及以上的a[i]为奇数答案就一定为0

考虑构造循环节,显然循环节个数越多答案越大。那么循环节的个数什么时候最多呢?显然循环节的个数最多为数的gcd。

构造的时候,如果a[i]的和为偶数随便构造,相邻的要反过来。有出现奇数的话那个为奇数的a[i]一定要放中间,构造的循环节也一定要是回文串

3|0C - Trails and Glades

CF209C Trails and Glades
题解:如果图联通那么是弱智题,关键是这个图它不连通。那么我们的目的是让图联通起来并且所有点的度数为偶数

第一步我们考虑一个不存在奇度数点的连通块,它需要连出两条边不然就会产生奇数点(但是由于重复计算就只加1条)

第二步我们发现一个连通块里面如果有超过两个奇度点,先互相连边对答案不劣,因为正好第一步连出的两条边可以接上,并且互相连边每次减少两个也不劣(一个连通块里的奇度点肯定是偶数个,不要问为什么)

最后我们只用考虑一些特判,比如一个没有边的联通块不要连(但是如果这个点是1就要连)

4|0D - One-Way Reform

CF723E One-Way Reform
题解:入度等于出度,如果有欧拉回路,那么跑欧拉回路,每个点的入度都等于出度,记录一下边的指向即可。可是有的点是奇度点怎么办?

简单,就让它变成一个偶度点。具体方法是新建一个点,向每一个奇度点连一条边,这样奇度点都变成了偶度点,而因为一开始奇度点的个数为偶数(不要问为什么),那么新建的点也是偶度点,这就是一张欧拉图了。直接跑欧拉回路。

输出答案的时候,个数就是偶度点的个数,定边方案就是欧拉回路的方向,包含新建点的边当作没有。

5|0E - Goods transportation

题解:欸,这不是最大流板子题吗?但是数据范围太大了。

没关系,可以dp模拟最大流?但是空间开不下。

没关系,可以滚动。

6|0F - Mike and Fish

CF547D Mike and Fish
题解:两两配对于x坐标相同的点,如果剩下点则不管,然后在每一对点之间连一条边

对于y坐标同样这么操作。

最后对得到的图进行黑白染色就得到方案。


__EOF__

本文作者星河倒注
本文链接https://www.cnblogs.com/wangwenhan/p/18286167.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   星河倒注  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示