其他分享
首页 > 其他分享> > loj#3056. 「HNOI2019」多边形

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