首页 > 其他分享 >CF1821F Timber 题解

CF1821F Timber 题解

时间:2024-05-26 16:55:45浏览次数:25  
标签:frac 题解 sum 得到 CF1821F binom 2k underline Timber

题意:

在 \([1, n]\) 的区间里放 \(m\) 棵树,每棵树的高度为 \(k\)。求有多少种放置树的方法,满足:

  1. 每个树都在整点上,且每个点最多只能放一棵树。
  2. 存在一种砍倒树的方案,使得树倒了之后不会越界,也不会有某个点被超过一棵树占据。你可以自由选择树向左倒(也就是占据区间 \([x - k, x]\))或者向右倒(也就是占据区间 \([x, x + k]\))。

\(n, m, k \le 3 \times 10^5\)

思路:

先让 \(k = k + 1\),这样就是覆盖点了。

首先,我们考虑一个判定行的算法:从左往右扫,能往左倒就往左倒,否则往右倒。

基于这个,我们可以设计 \(dp\) 方程,设 \(f_{n, m}\) 表示当前种了 \(m\) 棵树,最右边倒下的位置是 \(n\)。

我们可以得出方程:

\[f_{n, m} = \sum_{i=0}^{m - k}f_{i, m - 1} + \sum_{i = m - 2k + 2}^{m - k}f_{i, m - 1} \]

考虑生成函数优化,设 \(F_m(x) = \sum_{n}f_{n,m}x^n\),则我们可以通过上面的式子得到:

\[F_m(x) = F_{m-1}(x)(\sum_{i=k}^{\infty}x^i + \sum_{i = k}^{2k - 2}x^{i}) \]

化简一下得到:

\[F_m(x) = F_{m-1}(x)\frac{2x^{k} - x^{2k - 1}}{1 - x} \]

由于 \(F_0(x) = 1\),所以:

\[F_m(x) = (\frac{2x^{k} - x^{2k - 1}}{1 - x})^m \]

将分子展开得到:

\[x^{km}\sum_{i=0}^m\binom{m}{i}2^{m-i}(-1)^ix^{(k-1)i} \]

将分母根据 \(\frac{1}{(1-x)^n} = \sum_i \binom{n + i - 1}{n - 1}x^i\) 展开得到:

\[\sum_{j=0}^{\infty}\binom{m + j - 1}{m - 1}x^j \]

现在我们要求出所有小于等于 \(n\) 次的项的系数和,考虑枚举 \(i\),得到:

\[\sum_{i = 0}^m\binom{m}{i}2^{m-i}(-1)^i\sum_{j \le n - km - (k - 1)i}\binom{m + j - 1}{m - 1} \]

后面的和式可以进一步化简,我们其实就是要计算:

\[\sum_{i=0}^t \binom{m + i}{m} \]

的和。

考虑直接暴力拆开组合数得到:

\[\frac{\sum_{i=0}^t(m+i)^{\underline{m}}}{m!} \]

而根据离散微积分的积分:

\[\sum_{a}^bx^{\underline{m}}\Delta x = \frac{1}{m+1}x^{\underline{m+1}}\mid^a_b \]

我们可以对分母计算得到:

\[\frac{\frac{1}{m+1}(m + t + 1)^{\underline{m+1}} - \frac{1}{m + 1}m^{\underline{m+1}}}{m!} \]

发现后面的那一项会变成 \(0\),所以得到:

\[\frac{(m+t + 1)^{\underline{m+1}}}{(m+1)!} \]

也就是:

\[\binom{m + t + 1}{m + 1} \]

代入到答案中就能得到:

\[\sum_{i = 0}^m\binom{m}{i}2^{m-i}(-1)^i\binom{n - km - (k - 1)i + m}{m} \]

然后 \(O(n)\) 计算即可。

标签:frac,题解,sum,得到,CF1821F,binom,2k,underline,Timber
From: https://www.cnblogs.com/rlc202204/p/18213926

相关文章

  • [SHOI2007]书柜的尺寸 题解
    题目链接设\(f_{i,t1,t2}\)表示前\(i\)本书,第一层的宽度为\(t1\),第二层的宽度为\(t2\),所需要的最小高度。第三层宽度\(t3=\sum_{i=1}^{i}t_i-t1-t2\)。但本题还有一个重要限制:每层的高度取决于该层最高的书,如果直接按照顺序加入书本,从\(dp\)的状态来看,无法确定新书本......
  • CCF-GESP 等级考试 2024年3月认证C++一级真题解析
    2024年03月真题1单选题第1题C++表达式(3-2)*3+5的值是()。A.-13B.8C.2D.0正确答案:B.8解析:首先计算括号中的表达式(3-2),得到(1)。接下来进行乘法运算(1*3),得到(3)。最后进行加法运算(3+5),得到(8)。因此,表达式的值是(8)。第2题C++......
  • 题解:P6880 [JOI 2020 Final] オリンピックバス
    一个比较重要的性质:反转的边要在最短路上才会有贡献。我们可以先跑一遍最短路,记录下整颗最短路树,然后暴力的对每一条边进行判断,反转。我们建正反图各两个,分别以\(1\),\(n\)为起点。\(n\),\(1\)为终点。然后对每个图跑最短路,记录下最短路树。若不反转任何一条边,则答案为\(1\)......
  • 题解:CF1119D Frets On Fire
    大水题。首先,若区间内只有一根弦,不会对答案有贡献。我们思考如何对答案产生贡献。我们知道,对于每一个\(s_i\),都会产生一段\(s_i+r-l\)的连续序列,在对\(s\)数组排序后,若每个\(s_i+r-l\ges_{i+1}\)则答案为\(s_n+r-(s_1+l)+1\)。若够不到下一位呢?我们在\(s_n+r-(s_1+l......
  • UVA11922 Permutation Transformer 题解
    题目传送门前置知识无旋treap解法与luoguP3391【模板】文艺平衡树不同的是本题翻转后需要放到整个序列的末尾。由于需要翻转后放到末尾,故无旋Treap在维护文艺平衡树的过程中合并时跳着合并即可。代码#include<bits/stdc++.h>usingnamespacestd;#definelllong......
  • 题解【CF798D Mike and distribution】
    题目链接思考方向:构造方法满足\(A\)的要求,再满足\(B\)的要求。如果只考虑\(A\),有一种显然的方案:将\(A\)从大到小排序,选出前\(\left\lfloor\frac{n}{2}\right\rfloor+1\)大的即可。但这样显然难以扩展,所以需要另寻方案。由于题目提供了额外的\(+1\),所以先将最大的......
  • UVA1674 闪电的能量 Lightning Energy Report 题解
    题目传送门前置知识树链剖分|线段树解法树链剖分后维护一个支持区间修改,单点查询的线段树即可。也可以树上差分,同146.DFS序3,树上差分1的\(1,2\)操作,时间复杂度比树链剖分更优。代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#define......
  • CF1141E Superhero Battle 题解
    题目传送门简化题意给定\(H,n\)和一个长度为\(n\)的序列\(d\),求一个最小的\(m\)使得\(H+\sum\limits_{i=1}^{m}d_{(i-1)\bmodn+1}\le0\)。解法将式子移项后得到\(\sum\limits_{i=1}^{m}-d_{(i-1)\bmodn+1}\geH\)。将\(\sum\limits_{i=1}^{m}-d_{(i-1)\bmo......
  • SP14943 DRTREE - Dynamically-Rooted Tree 题解
    题目传送门前置知识树链剖分|线段树解法树剖换根,子树查询板子。类似换根DP的思路,我们发现换根后仅有祖先、子树、深度等会随祖先的变化而变化。设\(rt_{i}\)表示第\(i\)次操作的树根,\(x_{i}\)表示第\(i\)次操作的节点。接着进行大力分讨。当\(rt_{i}=x_{i}\)......
  • 图的dfs遍历题解
    本蒟蒻又来做题啦!看看今天做啥题。。。。题目描述时间:1s 空间:256M题目描述:给出一个无向图和一个起点s,输出这个图从s结点开始的DFS遍历序列。规定:节点邻居按照输入的顺序遍历输入格式:共M+1行。第11行包含33个正整数N,M,s,表示有N个点,M条边,起点为s。第2~M+1行包含2个用......