codechef Hikaru, Touya and Waya

题意

给定长度为(n)的序列({c}),判断是否存在一个图,与(i)相邻的边权和为(c_i)(i,j)之间的边边权不能超过(ioplus j且为整数)

做法

显然,若(c_i) is odd无解

构造二分图,源点向左边(i_1)的点连容量为(c_i)的点,右边(i_2)向汇点连容量为(c_i)的点
中间连(ioplus j)

结论:存在解的充要条件为流是满的

证明:
必要性是显然的
考虑流满时构造解,对于(i,j)间边权为(frac{e_{i,j}}{2})
找到分数环
若为偶环,则将(frac{1}{2})移到间隔边
若为奇环,找到两个奇环,其中利用若干整边形成偶环

原文地址:https://www.cnblogs.com/Grice/p/13517536.html