Codeforces Round #639 -E

E

建立有向图,结点表示变量,a->b表示存在式子(a<b)。

1、 有解的充分必要条件是无环。

无环时一定有解:全部存在性约束,因为无环所以存在入度为零的点,入度为零的点先随意安排一个值,然后按照拓扑序,每个结点安排max(入度结点值)+1即可。

有环时一定无解:有环说明存在一个结点大于或者小于自身,不可能存在约束使其满足。

又有环无环为对立条件,根据逆反原理,有解时一定无环。

所以定理成立。

2、如果一个结点与比标号小的结点存在<或者>关系,则这个结点只能为存在性约束。(枚举证明一下,或者逻辑推导一下。)

其余的结点可能为任意性约束。则最好情况是其余节点全部为任意性约束。

令其余节点都为任意性约束,证明不会出现矛盾。

首先,任意性结点之间不存在</>关系,因为存在则任意性结点对不成立。

1) 如果一个存在性结点只受到一个任意性结点的约束,则存在取值。

2) 如果一个存在性结点受到两个以上的结点约束,则同时受到<约束,或者>约束,不可能同时受到<和>约束因为这样会导致任意性结点之间存在大小关系,则该结点只需要取max/min(入度结点值)+1/-1即可。

核心思维:数形结合,有向无环图(DAG)的理解与运用。

posted @ 2020-05-07 11:10  dialectics  阅读(140)  评论(0编辑  收藏  举报