CF960G】的更多相关文章

[CF960G]Bandit Blues(第一类斯特林数,FFT) 题面 洛谷 CF 求前缀最大值有\(a\)个,后缀最大值有\(b\)个的长度为\(n\)的排列个数. 题解 完完全全就是[FJOI]建筑师的加强版本. 显然每一个前缀最大值和一段连续的区间构成了一个环排列,显然每个前缀最大值就是这个环中的最大值.而全局最大值一定把前后缀最大值分开. 所以答案考虑除最大值外,左侧需要\(a-1\)个前缀最大值,右侧需要\(b-1\)个前缀最大值.也就是一共要\(a+b-2\)个环,那么这一部分的贡…
题目链接 CF960G 题解 同FJOI2016只不过数据范围变大了 考虑如何预处理第一类斯特林数 性质 \[x^{\overline{n}} = \sum\limits_{i = 0}^{n}\begin{bmatrix} n \\ i \end{bmatrix}x^{i}\] 分治\(NTT\)即可在\(O(nlog^2n)\)的时间内预处理出同一个\(n\)的所有\(\begin{bmatrix} n \\ i \end{bmatrix}\) 其实还有比较优美的倍增\(fft\)的\(O(…
[CF960G]Bandit Blues 题面 洛谷 题解 思路和这道题一模一样,这里仅仅阐述优化的方法. 看看答案是什么: \[ Ans=C(a+b-2,a-1)\centerdot s(n-1,a+b-2) \] 组合数我们已经可以\(O(N)\)求了,主要是第一类斯特林数存在问题. 考虑它的转移: \[ s(n,m)=s(n-1,m-1)+(n-1)*s(n-1,m) \] 根据这个转移,我们写出它\(n\)固定时的生成函数 \[ G(x)=\prod_{i=0}^{n-1}(x+i) \…
题目 CF960G 做法 设\(f(i,j)\)为\(i\)个数的序列,有\(j\)个前缀最大值的方案数 我们考虑每次添一个最小数,则有:\(f(i,j)=f(i-1,j)+(i-1)*f(i-1,j-1)\),显然这是第一类斯特林数 从而我们得到一个朴素的答案:\[Ans=\sum\limits_{i=1}^{n}f_{i,a-1}×f_{n-1-i,b-1}×C_{n-1}^i\] 理解:枚举\(i+1\)为最大值添的位置,则已限制了前缀最值个数及后缀最值个数,然后再乘上前半部分所填的数 观…
题意 给你三个正整数 \(n,a,b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数,定义 \(B\) 为一个排列中是后缀最大值的数的个数,求长度为 \(n\) 的排列中满足 \(A = a\) 且 \(B = b\) 的排列个数.\(n \le 10^5\),答案对 \(998244353\) 取模. Sol 首先可以设一个 \(DP\) 状态 \(f(i,j)\) 表示,长度为 \(i\) 的排列,有 \(j\) 个前缀最大值的方案数. 那么转移就是枚举新放一个最小值,只有放在序列…
传送门 弱化版:FJOI2016 建筑师 由上面一题得到我们需要求的是\(\begin{bmatrix} N - 1 \\ A + B - 2 \end{bmatrix} \times \binom {A+B-2} {A - 1}\) 注意到这题的复杂度瓶颈是求第一类斯特林数,因为求组合数可以\(O(N)\),但是暂时我们求第一类斯特林数只有\(O(N^2)\)的方法 考虑第一类斯特林数的转移式子:\(\begin{bmatrix} a \\ b \end{bmatrix} = \begin{b…
题面1 题面2 两个题推导是一样的,具体实现不一样,所以写一起了,以FJOI 2016 建筑师 的题面为标准 前后在组合意义下一样,现在只考虑前面,可以发现看到的这a个建筑将这一段划分成了a-1个区间,区间里的数随意填. 看起来可以用组合数算,但是还要考虑看到的建筑,所以我们把每个建筑和它后面这段区间合起来看.设区间的长度是len,这就是一个len+1个数的圆排列(等于len!,相当于固定一个开头后面随便排) 这样考虑前后就是将n-1个数划分为a+b-2个全排列,n-1是因为最高的那个在两边都没…
$ \color{#0066ff}{ 题目描述 }$ 给你三个正整数 \(n\),\(a\),\(b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数,定义 \(B\) 为一个排列中是后缀最大值的数的个数,求长度为 \(n\) 的排列中满足 \(A = a\) 且 \(B = b\) 的排列个数.\(n \le 10^5\),答案对 \(998244353\) 取模. \(\color{#0066ff}{输入格式}\) 三个整数n,a,b \(\color{#0066ff}{输出格式}\…
传送门 可以去看看litble巨巨关于第一类斯特林数的总结 设\(f(i,j)\)为\(i\)个数的排列中有\(j\)个数是前缀最大数的方案数,枚举最小的数的位置,则有递推式\(f(i,j)=f(i-1,j-1)+(i-1)\times f(i-1,j)\) 这个就是第一类斯特林数 第一类斯特林数中\(S_1(n,m)\)是\(\prod_{i=0}^{n-1}(x+i)\)中\(x^m\)的系数,可以用分治\(FFT\)做到\(O(n\log^2n)\)的复杂度 首先\(n\)肯定是前缀最大值…
传送门 题意: 现在有一个人分别从\(1,n\)两点出发,包中有一个物品价值一开始为\(0\),每遇到一个价值比包中物品高的就交换两个物品. 现在已知这个人从左边出发交换了\(a\)次,从右边出发交换了\(b\)次. 现在问有多少个排列满足这一条件. 思路: 倒过来考虑的话,显然全局最大值为最后一次交换. 然后左边我们会放置\(a-1\)个递增的物品,右边放\(b-1\)个递减的物品,其余的物品我们在中间部分任意放置即可,但要保证价值在一定范围. 将问题进一步抽象,我们即要将\(n-1\)个数划…