「考试」省选96
T1
这个题就是考虑去大力分类讨论。
首先可以知道\(K>3\)的情况答案肯定是0.
那么分类讨论\(3,2,1,0\)的情况。
首先是\(k=3\)的情况。
这个情况很简单。
首先\(m\)必须为3。
就是我们考虑一下用总的方案去掉钝角三角形的方案。
那么答案就是:
这很简单直接等差数列求和就可以。
\(k=2\)
这个分\(m\)是不是\(3\)两种情况。
答案分别是
两个锐角在凸包上必然相邻。
那么我找到这两个锐角的点,然后找其他的位置上的点的个数就可以了。
这个组合数是\(\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\)。
所以
就可以了。
T2
对于若干个和为\(n\)的变量。
我们发现其权值种类数不超过\(\sqrt{n}\)。
那么分析操作。
对于某个点,如果想要增加其儿子的权值种类数。
必然要去操作其孙子。
那么其儿子有效增加权值种类数的操作个数最多是\(m\),那么依靠这种方式增长的权值最多有\(m\)个。
所以一个点儿子的权值种类个数最多是\(\sqrt{m}\)个。
这样我们搞个前向星存一下各个种类的权值和个数来维护就可以了。
T3
设\(n\)个变量\(x_i\in[1,T]\)的和为\(j\)的方案数为\(G(n,j)\)
我们发现需要求的答案是:
后面的组合数是可以展开的。
这样我们只需要知道对于一个\(j\),\(G(n,x)x^j\)的和是多少就可以了。
我们这样来求。
用生成函数。
设
\(F(j,w)=\sum\limits_{|x|=w}(\sum x_i)^j\)
这样我们发现有这种类似卷积的转移:
这样就可以了。
那么最终我们相当于做了一个长度为\(m-n\)的多项式快速幂。
直接暴力做就可以了。
然后我们知道\(F(j,1)=\sum\limits_{i=1}^{T}i^j\)
这个自然数幂和直接拉格朗日插值插出来就可以了。
复杂度是\(O((m-n)^2logn)\)