zoukankan      html  css  js  c++  java
  • 模拟赛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:记忆碎片

  • 相关阅读:
    多种的android进度条的特效源码
    仿360手机卫士界面效果android版源码
    非常不错的KPTimePicker效果源码
    jquery超级简单的后台系统自适应框架
    jquery银行电子账单表格填入和编辑插件
    jquery核心基础
    javascript基础的一些总结
    查看HA 的stat
    查看Linux服务器序列号
    TCPDUMP收集某个端口的流量
  • 原文地址:https://www.cnblogs.com/2004-08-20/p/14144697.html
Copyright © 2011-2022 走看看