• 「考试」省选28


    T1炸了
    别的没啥。

    T1
    (K>n)我就会死,窝阶乘只处理到了(n)
    其实挺简单的一个题。
    就是要求关于某一段路径,其两端分别连接(K)条不相交路径的方案。
    考虑一个点,他的儿子称为(ch_i)
    那么方案数的生成函数就是:

    [F(x)=prodlimits_{i}(sz[ch_i]x+1) ]

    这个可以直接分治(NTT)来计算。
    然后由于可以选这个路径端点。
    那么最终这个点的方案数就是:

    [sumlimits_{i}A_k^i[x^i]F(x) ]

    然后这样就可以统计没有祖先关系的路径的方案了。
    考虑有祖先关系的。
    无非是选定一个儿子。
    然后令:(F(x)=F(x)frac{(n-sz[x])x+1}{sz[ch_i]x+1})
    然后就直接竖式乘除暴力算就可以了。
    对于一个节点来说,最多被计算的次数是(sqrt{n}),其子树的大小总共只有(sqrt{n})种。
    然后每个节点最多做(sqrt{n})次竖式乘除。
    而每个节点的儿子数是(num_i)
    复杂度是:

    [O(sumlimits_{i=1}^{n}num_isqrt{n}=O(nsqrt{n}) ]

    T2
    (n=2,3)的时候贪心一下就行了。
    (n=4)的时候写个(dp),表示当前已经积累的选择的左端点个数。
    然后有两种选择。
    当前点作为左端点或者右端点。
    答案就是:(dp[n][0])
    然而这个是(O(n^2))的。
    考虑用贪心做这个东西。
    一直选择当前点为左端点,如果当前的(sum<0)那么就直接选择之前最大的某一个位置来更新答案。

    T3

    [ans=left|f-frac{s_r-s_l}{r-l} ight|=left|frac{fr-s_r+fl-s_l}{r-l} ight| ]

    那么把({i,fs_i})捏成点。
    求得就是两点间的斜率绝对值的最小值。
    按照第二维排一下序就(OK)

  • 相关阅读:
    ci上传图片
    Mac下使用svn命令
    linux 下svn忽略文件
    thinkphp5 隐藏入口和支持pathinfo
    ci tp重定向
    php命名空间
    thinkphp5学习记录一
    Mac下安装homebrew
    使用iTerm2快捷连接SSH
    摄影基础
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12346826.html
Copyright © 2020-2023  润新知