zoukankan      html  css  js  c++  java
  • 「考试」省选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))

  • 相关阅读:
    【2019/7/15】暑假自学——周进度报告
    用户体验评价
    《程序员修炼之道》读后感03
    《程序员修炼之道》读后感02
    《程序员修炼之道》读后感01
    《梦断代码》读后感03——为什么我们不能像造桥一样造软件
    《梦断代码》读后感02——问题的开始
    《梦断代码》读后感01——Chandle的开始
    第二阶段冲刺9
    十五周总结
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12889596.html
Copyright © 2011-2022 走看看