题目
思路来源
gzchenben的ppt
题解
数竞题,欧拉回路经典问题了,在cf也出过
Codeforces Round #770 (Div. 2) E. Fair Share(欧拉回路)_codeforces 构造 欧拉回路_Code92007的博客-优快云博客
这里再总结一下欧拉回路的这个套路
首先建图,同一种颜色视为同一个点,
由于要满足两堆小石子具有相同的总重量,
可以把4n枚小石子看做是2n对,即(1,4n),(2,4n-1),...,(2n,2n+1)
石子对的内部进行连边,即对于1<=i<=2n,将i和4n+1-i连无向边
只要每一对石子属于同一堆,每一堆有n对,即可实现总重量相等的要求
假设n=3,
4n个石子中,1,2,6,9为A颜色,3,4,5,11为B颜色,7,8,10,12为C颜色,
则可以这么建无向图
A-C (1,12)
A-B (2,11)
B-C (3,10)
B-A (4,9)
B-C (5,8)
A-C (6,7)
其中,前面是边,后面是与之对应的点对
建好图后,发现颜色的n个点,每个点的度均为4,
则图一定有欧拉回路,求出一个欧拉回路,回路共2n条边
可以将这2n条边黑白染色,分为两堆
则:
①由于图上每条边,对应一个点对,即和为4n+1的两枚小石子,
所以总重量相等,且可还原方案
②由于欧拉回路中,点[i]的入度和出度相等,in和out时在序列中的奇偶性也不同
所以按黑白染色,每个颜色的点恰能等分
思考
点的概念很好取,主要在如何建图,
使得图存在欧拉回路,且奇偶染色可以满足要求
1. 本题:n个颜色视为点,将i和4n+1-i连边,
欧拉回路交替取,每条边对应的两个点归属给同一方
点可被两侧等分(边维度):
将欧拉回路对应边的序号写成序列,对于每个点,
其in边和out边在序列位置的奇偶性一定不同
即in边全奇,out边全偶;或in边全偶,out边全奇。
2. cf的E题:n个值视为点,将同组i和i+1连边,
欧拉回路交替取,每条边对应的两个点归属给不同方
点可被两侧等分(点维度):
将欧拉回路对应的边的两个点号写成序列,
例如,u->v->w,则序列写做u,v,v,w,对于每个点,
其in的时间戳和out的时间戳在序列位置的奇偶性一定不同
即in时间戳全奇,out时间戳全偶;或in时间戳全偶,out时间戳全奇。