[ZJOI2010]排列计数

前言

计数问题

解决

问题转化

首先这题单纯的去看题目的意思其实很难的,之后我们就去转化一下问题, i i i i / 2 i / 2 i/2可以让你想到啥,是不是二叉树,那么 f [ i ] > f [ i / 2 ] f[i] > f[i/2] f[i]>f[i/2]这是啥,是不是小根堆,其实不用知道这是个小根堆也可以,只要可以看出来这是一个二叉树就好了。

正解

之后我们发现是不是1只可以放在root上,之后是不是左右儿子是互相不影响的,之后我们就去分开考虑。左儿子给l个,那么剩下的是不是只用放到右儿子是不是就好了。

a n s = C ( n − 1 , l ) ∗ 左 儿 子 的 方 案 ∗ 右 儿 子 的 方 案 数 ans = C(n-1 ,l)*左儿子的方案*右儿子的方案数

你可能感兴趣的:(好题笔记,数据结构,算法,图论)