zoukankan      html  css  js  c++  java
  • 2019.10.15题解

    A. 梦境

    标签:

    贪心

    题解:

    考虑贪心:把区间按R升序排序,每次lower_bound取走第一个比L大的转折点,反证法可以证明它一定是对的

    B. 玩具

    标签:Dp

    题解:

    这是道Dp的好题,同时也是考场上拉开前几名分差的题。

    设:

    f[i][j]代表i个点组成的树深度不超过j的概率

    g[i][j]代表i个点组成的森林深度不超过j的概率

    h[i][j]代表i个点的森林中第一棵树有j个节点的概率

    考虑转移:

    h[i][j]=h[i-1][j-1]*(j-1)*inv[i]+h[i-1][j]*(i-j)*inv[i];

    这里是i而不是i-1是因为i这个点可以单独成树,贡献被算到了h[i-1][j]的系数里

    归纳证明一下h[i][j]=[j!=0]*inv[i]:

    (1)h[0][j]=[j!=0]显然成立

    (2)假设h[i-1][?]成立,带入上述递推式得:

    1>j==1

    h[i][j]=0*inv[i]+(i-1)*inv[i-1]*inv[i];

    h[i][j]=inv[i];

    2>j!=1

    h[i][j]=(j-1+i-j)*inv[i]*inv[i-1];

    h[i][j]=inv[i];

    与原题设相符合,证毕。

    f[i][j]=g[i-1][j-1](可以从实际意义考虑)

    $ g[i][j]=sumlimits_{k=1}^{i}f[k][j]*g[i-k][j]*h[i][k] $

    C. 飘雪圣域

    标签:主席树

    以后这种题还是尽量要去优化$ log^2 $,毕竟原来的NOIP是不开O2的

    题解:

    联通块数=点数-边数

    考虑把每条边右端点看作位置,左端点看作权值,建出一棵主席树,

    询问同理,直接在主席树上查询即可

  • 相关阅读:
    Jenkins发布Java项目
    自动发布项目(支持部署,回退功能)
    Gitlab Server
    1一站式管理所有SpringBoot启动类,Services服务窗口
    Navicat 连接MySQL8.0.23 出现2059错误
    2命令模式
    1模板方法模式
    7享元模式
    6外观模式
    5桥梁模式
  • 原文地址:https://www.cnblogs.com/AthosD/p/11678683.html
Copyright © 2011-2022 走看看