Codeforces Round #431 (Div. 1) D.Shake It!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #431 (Div. 1) D.Shake It!相关的知识,希望对你有一定的参考价值。
·最小割和组合数放在了一起,产生了这道题目。
英文题,述大意;
一张初始化为仅有一个起点0,一个终点1和一条边的图。输入n,m表示n次操作(1<=n,m<=50),每次操作是任选一条已存在的边,新建一个编号为(n+1)的节点并向这条边的两个端点连边(共连接两条边)。输入n次操作后满足最小割为m的图有多少种。此处两个图相同当且仅当两边集和点集满足双射。答案取模109+7。
分析:
本题要求方案数。首先读题较困难之处是什么样的两个图算不同的方案。知道每次加入的点是有编号的,有编号的点是独一无二的。在这里画一些图以便清晰理解,以下两个图的情况均为两种方案而不是一种:
回到题目要求,最苛刻的无非是加入了最小割的限制。因此先试放宽要求,不考虑最小割的限制。那么,假如当前进行了n次操作,那么图中的边数可以算出来等于(1+2*n),那么第(n+1)次操作所添加的点共有(1+2*n)种添加方式。没有最小割,这个思路将非常棒。
但是你可以发现,如果添上最小割,上述方法就不可行了。分析失败的原因,是因为每次添加一个点到随意地一个位置的方法难以维护当前图的最小割。因此,我们需要寻找一种方法,既可以通过组合计算方案数(因为这道题不可能枚举每种图,所以计算组合方案是必要的)又可以保证能够在保持最小割为某个值的情况下进行方案数运算。
以上是关于Codeforces Round #431 (Div. 1) D.Shake It!的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #431 (Div. 2) A
Codeforces Round #431 (Div. 2) B
codeforces比赛题解#849 CF Round #431 (Div.2)