codechef Hikaru, Touya and Waya
题意
给定长度为\(n\)的序列\(\{c\}\),判断是否存在一个图,与\(i\)相邻的边权和为\(c_i\),\(i,j\)之间的边边权不能超过\(i\oplus j且为整数\)
做法
显然,若\(c_i\) is odd无解
构造二分图,源点向左边\(i_1\)的点连容量为\(c_i\)的点,右边\(i_2\)向汇点连容量为\(c_i\)的点
中间连\(i\oplus j\)
结论:存在解的充要条件为流是满的
证明:
必要性是显然的
考虑流满时构造解,对于\(i,j\)间边权为\(\frac{e_{i,j}}{2}\)
找到分数环
若为偶环,则将\(\frac{1}{2}\)移到间隔边
若为奇环,找到两个奇环,其中利用若干整边形成偶环