• 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的

    题解:

    联通块数=点数-边数

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

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

  • 相关阅读:
    无重复字符的最长子串
    有效的括号
    最长公共前缀
    罗马数字转整数
    Android解析JSON数据异步加载新闻图片
    回文数
    Java从Json获得数据的四种方式
    JavaMD5加密工具类
    div模仿select效果二:带搜索框
    BG雪碧图制作要求
  • 原文地址:https://www.cnblogs.com/AthosD/p/11678683.html
Copyright © 2020-2023  润新知