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}\)移到间隔边
若为奇环,找到两个奇环,其中利用若干整边形成偶环

posted @ 2020-08-17 14:49  Grice  阅读(71)  评论(0编辑  收藏  举报