• 模拟赛x+1


    A:接力比赛

    跑两遍背包就可以了




    B:树上竞技

    对于点考虑很麻烦 所以考虑边的贡献

    假定边一侧有S个点 另一侧有n-S个点

    假定S>=n-S

    那么最终集合点一定在n-S这边 此时这条边的贡献即为S

    所以可以列出式子

    (sumlimits_{i=1}^{m-1} inom{S}{i} inom{n-S}{m-i} * min(i,m-i))

    含有min 不容易计算 所以把式子拆开

    (sumlimits_{i=1}^{frac{m-1}{2}} inom{S}{i} inom{n-S}{m-i} * i + sumlimits_{i=1}^{frac{m-1}{2}} inom{S}{m-i} inom{n-S}{i} * i + [m)%(2=0] * inom{S}{frac{m}{2}} * inom{n-S}{frac{m}{2}} * frac{m}{2})

    后面的东西显然特判掉可以直接处理

    考虑前面的东西怎么计算

    首先前面的东西可以化成(S*sumlimits_{i=1}^{frac{m-1}{2}} inom{S-1}{i-1} inom{n-S}{m-i})

    (G(S) = sumlimits_{i=1}^{frac{m-1}{2}} inom{S-1}{i-1} inom{n-S}{m-i})

    不妨用常量k代替(frac{m}{2})

    (G(S) = sumlimits_{i=1}^{k} inom{S-1}{i-1} inom{n-S}{m-i})

    考虑能否由(G(i))快速转移到(G(i+1))

    考虑(G(i))的数学意义 表示在一共n-1个数中 选择m-1个数 其中前S-1个中最多选k个

    (G(i))(G(i+1))转移 其中所不同的部分只有i这一个位置 在(G(i))中 前i-1个选择k-1个 然后选中i 是合法的

    但是在(G(i+1))中 则不存在这样的情况

    所以直接减去这样的情况就可以了 O(n) 递推把所有G预处理出来 然后一遍dfs就可以了





    C:虚构推理

    枚举时刻 二分最大的角度的位置 然后取max

    这里的时刻要枚举到0.1s

    正解是二分角度 然后对于每个时间 都处理出合法区间 看是否有交




    D:记忆碎片

  • 相关阅读:
    [转载]ASP.NET中IsPostBack详解
    [转载]论asp.net out、ref、return
    用CSS让字体在一行内显示不换行
    改变时间格式的方法
    JS方法的使用
    [转载] iframe嵌入网页的用法
    iphone6 inline-flex兼容问题
    ActionResult的其它返回值
    为什么java中只允许继承一个类?
    关于asp.net MVC3 ----@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
  • 原文地址:https://www.cnblogs.com/2004-08-20/p/14144697.html
Copyright © 2020-2023  润新知