「考试」省选96

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

[ans=inom{n}{m}-nsumlimits_{i=1}^{frac{n}{2}-1}i ]

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

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

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

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

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

就可以了。

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

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

[ans=sumlimits_{x=0}^{S}G(n,x)inom{S-x}{m-n} ]

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

[egin{aligned} inom{S-x}{m-n}&=frac{1}{(m-n)!}(S-x)^{underline{m-n}}\ &=frac{1}{(m-n)!}sumlimits_{i=0}^{m-n}(-1)^{m-n-1}egin{bmatrix}m-n\iend{bmatrix}(S-x)^i\ &=frac{1}{(m-n)!}sumlimits_{i=0}^{m-n}(-1)^{m-n-1}egin{bmatrix}m-n\iend{bmatrix}sumlimits_{j=0}^{i}inom{i}{j}(-1)^jx^jS^{i-j}\ end{aligned} ]

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

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

[F(j,w+1,x)=sumlimits_{k=0}^{j}inom{j}{k}F(j,w)F(j-k,1) ]

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

原文地址:https://www.cnblogs.com/Lrefrain/p/12889596.html