A - Fair Share
CF1634E Fair Share
题解:用二分图做的。首先如果一种颜色出现奇数次一定无解。
否则对于一种颜色的点分组,每组两个之间连边,保证每种颜色平分。
然后把每一个数组分成n[i]/2组,每组两个之间连边,保证每一个数组平分。
这样一定连出的是二分图,黑白染色
B - Necklace
CF613C Necklace
题解:首先判断答案为0,很显然如果两个及以上的a[i]为奇数答案就一定为0
考虑构造循环节,显然循环节个数越多答案越大。那么循环节的个数什么时候最多呢?显然循环节的个数最多为数的gcd。
构造的时候,如果a[i]的和为偶数随便构造,相邻的要反过来。有出现奇数的话那个为奇数的a[i]一定要放中间,构造的循环节也一定要是回文串
C - Trails and Glades
CF209C Trails and Glades
题解:如果图联通那么是弱智题,关键是这个图它不连通。那么我们的目的是让图联通起来并且所有点的度数为偶数
第一步我们考虑一个不存在奇度数点的连通块,它需要连出两条边不然就会产生奇数点(但是由于重复计算就只加1条)
第二步我们发现一个连通块里面如果有超过两个奇度点,先互相连边对答案不劣,因为正好第一步连出的两条边可以接上,并且互相连边每次减少两个也不劣(一个连通块里的奇度点肯定是偶数个,不要问为什么)
最后我们只用考虑一些特判,比如一个没有边的联通块不要连(但是如果这个点是1就要连)
D - One-Way Reform
CF723E One-Way Reform
题解:入度等于出度,如果有欧拉回路,那么跑欧拉回路,每个点的入度都等于出度,记录一下边的指向即可。可是有的点是奇度点怎么办?
简单,就让它变成一个偶度点。具体方法是新建一个点,向每一个奇度点连一条边,这样奇度点都变成了偶度点,而因为一开始奇度点的个数为偶数(不要问为什么),那么新建的点也是偶度点,这就是一张欧拉图了。直接跑欧拉回路。
输出答案的时候,个数就是偶度点的个数,定边方案就是欧拉回路的方向,包含新建点的边当作没有。
E - Goods transportation
题解:欸,这不是最大流板子题吗?但是数据范围太大了。
没关系,可以dp模拟最大流?但是空间开不下。
没关系,可以滚动。
F - Mike and Fish
CF547D Mike and Fish
题解:两两配对于x坐标相同的点,如果剩下点则不管,然后在每一对点之间连一条边
对于y坐标同样这么操作。
最后对得到的图进行黑白染色就得到方案。
标签:连边,偶度,20240705,题解,奇度,回路,欧拉 From: https://www.cnblogs.com/wangwenhan/p/18286167