「考试」省选96

T1
这个题就是考虑去大力分类讨论。
首先可以知道\(K>3\)的情况答案肯定是0.
那么分类讨论\(3,2,1,0\)的情况。
首先是\(k=3\)的情况。
这个情况很简单。
首先\(m\)必须为3。
就是我们考虑一下用总的方案去掉钝角三角形的方案。
那么答案就是:

\[ans=\binom{n}{m}-n\sum\limits_{i=1}^{\frac{n}{2}-1}i \]

这很简单直接等差数列求和就可以。
\(k=2\)
这个分\(m\)是不是\(3\)两种情况。
答案分别是

\[ans=n\binom{\frac{n}{2}}{m-1} \]

\[ans=n(\binom{\frac{n}{2}}{m-1}+\binom{\frac{n}{2}+1}{m-1}) \]

两个锐角在凸包上必然相邻。
那么我找到这两个锐角的点,然后找其他的位置上的点的个数就可以了。
这个组合数是\(\binom{i}{m-2}\)多个求和得到的。
\(k=1\)
这个情况可以枚举一个锐角,然后找到形成锐角的三个点,在同时找到这两个边里面的点,从中选出\(m-4\)个就可以了。
这样需要保证\(m\geq 5\)
这一部分的答案是\(n(m-4)\binom{\frac{n}{2}+1}{m-1}\)这是做了两次组合数求和得到的。
\(k=0\)
我们知道\(k\leq 3\)
所以

\[ans=\binom{n}{m}-cal1-cal2-cal3 \]

就可以了。

T2
对于若干个和为\(n\)的变量。
我们发现其权值种类数不超过\(\sqrt{n}\)
那么分析操作。
对于某个点,如果想要增加其儿子的权值种类数。
必然要去操作其孙子。
那么其儿子有效增加权值种类数的操作个数最多是\(m\),那么依靠这种方式增长的权值最多有\(m\)个。
所以一个点儿子的权值种类个数最多是\(\sqrt{m}\)个。
这样我们搞个前向星存一下各个种类的权值和个数来维护就可以了。

T3
\(n\)个变量\(x_i\in[1,T]\)的和为\(j\)的方案数为\(G(n,j)\)
我们发现需要求的答案是:

\[ans=\sum\limits_{x=0}^{S}G(n,x)\binom{S-x}{m-n} \]

后面的组合数是可以展开的。

\[\begin{aligned} \binom{S-x}{m-n}&=\frac{1}{(m-n)!}(S-x)^{\underline{m-n}}\\ &=\frac{1}{(m-n)!}\sum\limits_{i=0}^{m-n}(-1)^{m-n-1}\begin{bmatrix}m-n\\i\end{bmatrix}(S-x)^i\\ &=\frac{1}{(m-n)!}\sum\limits_{i=0}^{m-n}(-1)^{m-n-1}\begin{bmatrix}m-n\\i\end{bmatrix}\sum\limits_{j=0}^{i}\binom{i}{j}(-1)^jx^jS^{i-j}\\ \end{aligned} \]

这样我们只需要知道对于一个\(j\)\(G(n,x)x^j\)的和是多少就可以了。
我们这样来求。
用生成函数。

\(F(j,w)=\sum\limits_{|x|=w}(\sum x_i)^j\)
这样我们发现有这种类似卷积的转移:

\[F(j,w+1,x)=\sum\limits_{k=0}^{j}\binom{j}{k}F(j,w)F(j-k,1) \]

这样就可以了。
那么最终我们相当于做了一个长度为\(m-n\)的多项式快速幂。
直接暴力做就可以了。
然后我们知道\(F(j,1)=\sum\limits_{i=1}^{T}i^j\)
这个自然数幂和直接拉格朗日插值插出来就可以了。
复杂度是\(O((m-n)^2logn)\)

posted @ 2020-05-14 16:32  Lrefrain  阅读(158)  评论(0编辑  收藏  举报