首页 > 其他分享 >a-story-of-the-small-p-ti-jie

a-story-of-the-small-p-ti-jie

时间:2024-05-08 18:23:56浏览次数:21  
标签:story jie xm sum times leq small +...+ dp

「2020-2021 集训队作业」A story of The Small P

题意

给定 $N, m, k$ ,求有多少个正整数序列 h 满足:

  • h 的长度 $n$ 满足 $1\leq n\leq N$。
  • $1\leq h_i\leq m$。
  • 正好存在 $k$ 个 $i$ 满足 $h_i<h_{i+1}$。

答案模 $998244353$。

$2\leq N, m, k\leq 2^{19},(N-k+1)\times m\leq 2^{20}$。

思路

先想 dp 。求的可以看成有 $n−1−k$ 个位置不满足的序列个数。

因为 $(N − k + 1)\times m\leq 2^{20}$,设 $dp_{i,j,k}$ 表示前 $i$ 个值,有 $j$ 个不满足,结尾为 $k$。

$dp_{i,j,k}$ 的值转移到 $dp_{i+1,j,l},k\leq l$ 和 $dp_{i+1,j+1,l},j<m$。

令 $s=j\times m+k$,则 $dp_{i,s}$ 可以转移到 $dp_{i+1,s1},s+1\leq s1\leq s+m$。


写成生成函数。$dp_i=(x+...+x
m)i$。$dp_{i,s}$ 即为 $dp_i$ 在 $x^s$ 处的系数。

对于一个长度小于 $N$ 的序列,在后面补上 $N−n$ 个不满足。

可以写成:

$$\sum_{i=1}N{((x+...+xm)^i\times (xm))}$$

$$=\frac{(x+...+xm-xm)\times \sum_{i=1}N{((x+...+xm)^i\times (xm){N-i}})}{x+...+x^{m-1}}$$

$$=\frac{\sum_{i=1}N{((x+...+xm)^{i+1}\times (xm){N-i}}-(x+...+xm)i\times (xm))}{x+...+x^{m-1}}$$

$$=\frac{(x+...+xm)-(x+...+x^m)\times (xm){N+1}}{x+...+x^{m-1}}$$

$$=\frac{(x+...+xm)-(xm){N+1}}{x+...+x{m-1}}-(xm)^N$$

$$=x^N\times \frac{(1+...+x{m-1})-(x{m-1}){N+1}}{1+...+x{m-2}}-(xm)^N$$

而答案即为 $x{(N−1−k)∗m+1}...x$ 项的系数之和。


设 $G(x)=1+...+x{m-1},F(x)=G(x)=\sum{(f_i\times x^i)}$。

$$F'(x)=(N+1)G'(x)G(x)^N$$

$$F'(x)G(x)=(N+1)G'(x)F(x)$$

$$F'(x)=\sum i\times f_i\times x^{i-1}$$

$$G'(x)=\sum_{i=0}^{m-2}{(i+1)\times x^i}$$

对于 $x^n$ 对比系数:

$$\sum_{i=0}^{m-1}{(n-i+1)\times f_{n-i+1}}=\sum_{i=0}^{m-2}{(i+1)\times f_{n-i}}$$

$$(n+1)f_{n+1}=\sum_{i=1}^{m-1}{((N+2)\times i-n-1)f_{n-i+1}}$$

$$f_i=((n+2)\times ((i\times \sum_{j=1}{m-1}{f_{i-j})}-\sum_{j=1}{((n-j+1)\times f_{n-j+1}}))-i\times \sum_{j=1}^{m-1}{f_{n-j+1}})\times inv_i$$

前缀和转移。

到这里可以算出 $(1+...+x{m-1})-(x{m-1})$ 的系数。


处理除法。

设 $g(x)=\frac{1}{1+...+x^{m-1}}=\sum (g_i\times x^i)$。

$$g_0=1$$

对于 $x^n$ 对比系数:

$$\sum_{i=0}^{m-1}{g_{n-i}}=0$$

$$g_i=\sum_{i=1}^{m-2}{g_{i-j}}$$

答案即为 $F(x)\times g(x)$ 的 $x{(N−1−k)∗m+1-N}...x$ 项系数和。

对于每个 $f_i$ 计算贡献:

$$ans=\sum_i {((\sum_{j=(N-k)\times m+1-i-N}^{(N-k)\times m+m-i-N}{g_j})\times f_i)}$$

end.

标签:story,jie,xm,sum,times,leq,small,+...+,dp
From: https://www.cnblogs.com/yhddd/p/18180560

相关文章

  • arc162f-ti-jie
    arc162f思路$a_{x1,y2}\timesa_{x2,y2}\leqa_{x1,y2}\timesa_{x2,y1}$改为所有$a_{x1,y1}=a_{x2,y2}=1$,都有$a_{x1,y2}=a_{x2,y1}=1$。观察发现,第$i$行$a_{i,j_1}=\ldots=a_{i,j_{num}}=1,(j_1<\ldots<j_{num})$,第$ii,(ii>i)$行能取$1$的位置是$[1,j_1-1]$和......
  • arc119f-ti-jie
    arc119f自动机写法。开始在做的时候题解没讲每个节点代表什么状态,自己推了一遍,记录一下。思路计数,求有多少种替换方式使得$0$到$n$存在一条长度小于等于$K$的路径。可以做$O(n^3)$的dp。设$dp_{i,a,b}$表示前$i$个位置,最近的$A$和$B$分别在$a$和$b$。官方......
  • arc106d-ti-jie
    ARC106D思路左边到右边不好,改为任意一个到另一个。$$ans_x=\frac{1}{2}(\sum_in\sum_jn(a_i+a_j)x-\sum_in(2\timesa_i)^x)$$拆开$k$次方。$$(a_i+a_j)x=\sum_{k=0}x(\binom{x}{k}\times{a_i}^k\times{a_j}^{x-k})$$$$ans_x=\frac{1}{2}(\sum_{k=0}x(\sum_in{a_i}^......
  • agc049a-ti-jie
    agc049a思路期望。与CF280C相似的思路。每个点最多被做一次,或者被其他点影响。设$f_i$表示$i$是否被选,为$0$或$1$。答案为$E[\sumf_i]$,即$\sumf_i$的期望。$$ans=E[\sumf_i]=\sumE[f_i]=\sump_i$$所以答案为每个点被选的概率的和。能影响点$i$使其不被......
  • abc349g-ti-jie
    abc349g思路从前往后枚举$i$,每次对$i+1\lej\lei+a_i$的$j$赋值$b_j=b_{i\times2-j}$。同时有$b_{i+a_i+1}\neb_{i-a_i-1}$。用$ban_{i,j}$记录$i$不能是$j$,如果要给$i$赋值就选最小的。最直接的就是并查集倍增将两段区间并起来。可以用类似马拉车的思路得......
  • StoryDiffusion文字生漫画
    地址https://github.com/HVision-NKU/StoryDiffusion安装condacreate-nstorydiffpython==3.11.0condaactivatestorydiff#修改一下requirements.txtgradio==4.21.0xformers==0.0.25diffusers==0.25.0transformers==4.36.2huggingface-hub==0.20.2spaces==0.19.......
  • allure功能使用-feature&story
    在测试类加注解@allure.feature表述整个测试模块在测试方法加注解@allure.story表述该模块下的某个测试案例或测试场景执行指定模块或执行测试场景时,可以执行下面命令(allure.feature比allure.story优先级高)pytest-s-v测试文件--allure-feature("模块名")pytest-s-v测试文件......
  • 题解【[ABC077D] Small Multiple】
    题目链接题意简述:给定正整数\(K\),求数位之和最小的\(K\)的倍数的数位和。错误方向:\(K\)的倍数一定满足\(K\timesS\),根据\(K\)的特征构造出合适的\(S\)。正确方向考虑直接构造出K的倍数,由于从1开始可以通过×10和+1构造出所有数字,并且在此......
  • Canvas图形编辑器-数据结构与History(undo/redo)
    Canvas图形编辑器-数据结构与History(undo/redo)这是作为社区老给我推Canvas,于是我也学习Canvas做了个简历编辑器的后续内容,主要是介绍了对数据结构的设计以及History能力的实现。在线编辑:https://windrunnermax.github.io/CanvasEditor开源地址:https://github.com/Wind......
  • Go文档:Release History(发布历史)
    本文更新于2024-03-22。官方文档:https://go.dev/doc/devel/release目录泛型go1.22.0(2024-02-06)go1.21.0(2023-08-08)go1.20(2023-02-01)go1.19(2022-08-02)go1.18(2022-03-15)模块go1.17(2021-08-16)go1.16(2021-02-16)go1.15(2020-08-11)go1.14(2020-02-25)go1.13(......