首页 > 其他分享 >抛开挂分不谈

抛开挂分不谈

时间:2024-02-22 14:59:17浏览次数:13  
标签:begin 挂分 right end sum 不谈 抛开 array left

这场模拟赛真是太幽默了哈哈哈

Stage 1

不难注意到 \(f_n=\dfrac{1}{\binom{n+m}{m}}\)。

但是上述做法细节太多,尤其容易将 \(\binom{n+m}{m}\) 写成 \(\binom{n+m}{n}\) 导致 TLE 挂分。

所以我们应当参考题解学习高级做法。

首先不难发现, 记 \(g_{i}=\dfrac{f_{i}}{m}\), 那么

\[\left\{\begin{array}{c} g_{0}=0 \tag{3}\\ g_{i}=\frac{i}{m+i} g_{i-1}+\frac{1}{m+i} \quad(i \geq 1) \end{array}\right. \]

求出 \(g_{n}\) 即可。

把下面的式子换个形式:

\[\begin{equation*} (m+i) g_{i}=i g_{i-1}+1 \tag{4} \end{equation*} \]

\[\begin{equation*} y=\sum_{i \geq 0} g_{i} x^{i}=\sum_{i \geq 1} g_{i} x^{i} \tag{5} \end{equation*} \]

那么:

\[\begin{gather*} \sum_{i \geq 1}(m+i) g_{i} x^{i}=\sum_{i \geq 1}\left(i g_{i-1}+1\right) x^{i} \\ m y+x \sum_{i \geq 1} i g_{i} x^{i-1}=\sum_{i \geq 1} x^{i}+x^{2} \sum_{i \geq 1}(i-1) g_{i-1} x^{i-2}+x >\sum_{i \geq 1} g_{i-1} x^{i-1} \tag{6}\\ m y+x y^{\prime}=\frac{x}{1-x}+x^{2} y^{\prime}+x y \end{gather*} \]

整理:

\[\begin{equation*} y^{\prime}+\frac{m-x}{x-x^{2}} y=\frac{1}{(1-x)^{2}} \tag{7} \end{equation*} \]

发现这是一阶线性微分方程的形式。

记 \(P(x)=\frac{m-x}{x-x^{2}}, Q(x)=\frac{1}{(1-x)^{2}}\) 。

那么根据常数变易法, 有:

\[\begin{equation*} y=\exp \left(-\int P(x) d x\right) \cdot \int Q(x) \exp \left(\int P(x) d x\right) d x \tag{8} \end{equation*} \]

\(P(x)\) 是有理函数:

\[\begin{equation*} \int P(x) d x=\int\left(\frac{m}{x}+\frac{m-1}{1-x}\right) d x=m \ln x-(m-1) \ln (1-x)+C_{1} \tag{9} \end{equation*} \]

这里认为 \(x \in(0,1)\) 。

\[\begin{gather*} \exp \left(\int P(x) d x\right)=C_{1} x^{m}(1-x)^{1-m} \\ \int Q(x) \exp \left(\int P(x) d x\right) d x=\int \frac{1}{(1-x)^{2}} \cdot C_{1} x^{m}(1-x)^{1-m} d x >\tag{10}\\ =C_{1} \int x^{m}(1-x)^{-m-1} d x \end{gather*} \]

用级数积分(事实上, 原微分方程是非初等的)

根据牛顿二项式定理,有:

\[x^{m}(1-x)^{-m-1}=\sum_{i \geq 0}\left(\begin{array}{c} m+i \tag{11}\\ m \end{array}\right) x^{m+i} \]

那么

\[\begin{gather*} \int Q(x) \exp \left(\int P(x) d x\right) d x=C_{1} \int x^{m}(1-x)^{-m-1} \\ =C_{1}\left(C_{2}+\sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{m+i+1}}{m+i+1}\right) \tag{12}\\ =C_{1}+C_{2} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{m+i+1}}{m+i+1} \end{gather*} \]

所以

\[\begin{array}{r} y=C_{3}(1-x)^{m-1} x^{-m}\left(C_{1}+C_{2} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{m+i+1}}{m+i+1}\right) \tag{13}\\ =C_{3}(1-x)^{m-1} x^{-m}+C_{2}(1-x)^{m-1} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{i+1}}{m+i+1} \end{array} \]

为了适合初始条件 \(\left.y\right|_{x=0}=0,\left[x^{1}\right] y=\frac{1}{m+1}, C_{3}=0, C_{2}=1\) 。

那么:

\[\begin{gather*} y=(1-x)^{m-1} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{i+1}}{i+m+1} \\ =\sum_{j}(-1)^{j}\left(\begin{array}{c} m-1 \\ j \end{array}\right) \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{i+j+1}}{i+m+1} \tag{14}\\ =\sum_{n} x^{n} \sum_{j}\left(\begin{array}{c} m-1 \\ j \end{array}\right)\left(\begin{array}{c} n+m-j-1 \\ m \end{array}\right) \frac{(-1)^{j}}{n+m-j} \end{gather*} \]

所以

\[g_{n}=\sum_{j}\left(\begin{array}{c} m-1 \tag{15}\\ j \end{array}\right)\left(\begin{array}{c} n+m-j-1 \\ m \end{array}\right) \frac{(-1)^{j}}{n+m-j} \]

\(O(m \log m)\) 计算即可。时间复杂度 \(O(T m \log m)\) 。

看这个形式不知道有没有组合意义的理解。

真是太巧妙了!!!虽然比我原来做法复杂度劣一点,但是真是简单太多了。

Stage 2

T2。只会 \(O(n^2k)\) 怎么办?什么?你说 \(n\le2000,k\le10\)?肯定是数据问题有问题,还是看题解吧!

题解

直接做非常难做, 但你不难发现, 长度为 \(n\) 的序列, 可以理解为 \(n+2\) 个点的树对应的 prufer 序列!

进一步, prufer 序列出现次数加 1 就是树上对应的点的度数。

又由于只有 \(n+1\) 个值, 因此等于钦定标号为 \(n+2\) 的点度数为 1 。那我们不妨将它作为根。

然后就可以动态规划了。

\(f_{x}\) 表示大小为 \(x\) 的有根树的方案数。

\(g_{d, x}\) 表示 \(d\) 个有根树, 且大小总和为 \(x\) 的方案数。

转移是简单的:

\(f_{x}=\sum_{d=1}^{k} g_{d, x-1} \times x\)

\(g_{d, x}=\sum_{y=1}^{x} g_{d-1, x-y} \times f_{y} \times\left(\begin{array}{l}x-1 \\ y-1\end{array}\right)\)

对于 \(n\), 答案就是 \(f_{n+1}\) 。

组题人注:

可以做到更优的复杂度。这是供题人的原文:

利用全在线卷积优化,可以很轻松做到 \(O\left(n k \log ^{2} n\right)\) 。

生成函数(指多项式求逆)下,复杂度 \(O(n k \log n)\) 。

但是由于写 std 的人不知道如何多项式求逆优化到 \(O(n k \log n)\), 而全在线卷积套上去意义不大, 所以就成了 \(O\left(n^{2} k\right)\) 。

真是太巧妙了,这么难做的提为什么想不到图论!鞭策自己!

Conclusion

pig 给 dash 开门——抽象到机房了!

标签:begin,挂分,right,end,sum,不谈,抛开,array,left
From: https://www.cnblogs.com/yinhee/p/18027310

相关文章

  • NOIP 2023 挂分日寄
    NOIP2023挂分日寄Day-12023.11.17光速改完前一天的联考T4,进入板子大赛感觉前面的各种板子熟练了不少,好!居然没有忘掉线性求逆元这个神秘东西,一大进步Inv[i]=1ll*(p-p/i)*Inv[p%i]%p线段树也在10分钟左右调完,比较顺,信心++但是最后的什么神秘Z函......
  • nfls 11.10挂分日记
    今天老老实实写了对拍,但是还是挂分了。T1数论分块,学了一下双指针的写法,我那个写法又对于大肠选手直接T飞了。没注意到这个数据其实很大概率都是全部输出0,在没有精心构造的情况下几乎全都跑挂了。T2一个最短路的变形题目,每个行每个列跑一个最短路就好了,将关键点之间连边,然......
  • nfls 11.7 挂分日志
    不是,nfls你别太荒谬,天天出黑,这是NOIP模拟赛不是NOIPro模拟赛。T1一个很明显能看出来的一个匹配过程,考场上没想到可以用两个优先队列来模拟这个匹配过程,贺了个匈牙利二分图匹配上去,但是!!!下面这一段代码记死了,不要用!!!lltot,h[N];structedge{llv,ne;}e[M];#define......
  • nfls 11.6 挂分日志
    没想到吧,这个破玩意儿还能有续集。/hshT1一个分类讨论,对于第三个类进行分类的时候一直往他的循环节和循环关系去想了,思路就错了/cf,真的第一次遇到这种思路就错的东西/kk。T2没想到啊,放了个黑题,谁教你这么出NOIP模拟赛的。这个题没发现一个重要性质,将一个字符设置为\(1\),另一......
  • 挂分记录
    11.1inlinevoidmodify(intx,intdlt){}inlinevoidmodify(intl,intr,intdlt){}...modify(l,r);modify(l,r)应为modify(l,r,dlt),\(65\to55\)。intsz=vec.size();for(inti=0;i<sz;i+=2)vec[i]...sz应为sz-1,\(100\to20\)。......
  • HUSTFC 2023 挂分记
    妈的,挂完了。发生肾么事了?发生肾么事了?发生肾么事了?发生肾么事了?发生肾么事了?发生肾么事了?发生肾么事了?发生肾么事了?挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了挂完了因为我在这场比赛中超常发挥,把所有我犯过的没......
  • 挂分记(持续更新ing...)
    (持续更新ing...)来,今天教教如何考场挂大分学校模拟赛7.31模拟赛\(T1\)没读懂题,挂\(40\)分;\(T2\)读错题,不知道挂了多少分8.17模拟赛没打freopen挂\(8\)分8.24模拟赛树上\(DFS\)求子树大小,没算这个节点本身8.25模拟赛逆序开题,结果\(T1\)会,但是没打......
  • 默笙の挂分小技巧
    挂分小技巧:计数题没开longlong快速幂底数没取模爆longlong对快速幂指数取模\(dp\)省去一维后没有反向\(check\)函数内一种情况不行直接return0把默认堆(大顶堆)当成小顶堆区间\(dp\)的断点\(k\)取到了\(r\),导致\(k+1>r\)环形\(dp\)没开双倍空间栈没放标兵......
  • EFZ暑训2023 挂分记录
    \(Day1\)\(20230731\):挂\(120pts\),\(120\to0\)(原因:Dev-C++保存炸了)\(Day2\)\(20230801\):挂\(60pts\),\(250\to190\)(原因:不能先pop再push)\(Day3\)\(20230802\):挂\(-20pts\),\(100\to120\)(原因:以为T180pts,实际100pts)\(Day4\)\(20230803\):挂......
  • 挂分启示录
    1.关于return和std::exit()从main函数以return语句或以抵达函数尾返回,会进行正常函数终止(调用拥有自动存储期的对象的析构函数),再执行std::exit,将return语句的参数(或如果使用隐式return就是0)作为exit_code传递。也就是说return语句相比std::exit函数多执......