loj#3056. 「HNOI2019」多边形
作者:互联网
通过观察样例我们可以得到这样的结论
先将所有和d相连的边删掉,得到一堆区间,然后旋转这些区间的顶点边,使它变得和d相连
重复上述流程直到我们得到了一堆长度为1的区间们
那么很容易的看出上面的操作流程构成了一颗树的结构,除了根节点度数不确定每个点的度数都是2
方案数也十分显然就是\[prod_{i=1}^{n}{siz(i) \choose siz(s1),siz(s2) \dots)}\]
其中\(s1,s2,\dots\)表示i的孩子们
所以难点就是如何确定二叉树的形态,剩下的都好说,因为旋转仅仅修改了树的一个局部,推推式子该乘乘该除除就完了
我们采取一个十分简单的分治方法,假设现在我们要切割\((l,r)\)这个区间了,那么我们使用一个map来存每个点的出边
现在我们需要确定这个区间将从何处分裂
标签:dots,度数,loj,siz,s1,区间,s2,3056,HNOI2019 来源: https://www.cnblogs.com/sweetphoenix/p/10986468.html