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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通