• 20181016提高测试


    吃枣药丸

    T1

    【正解】秘制组合数

    两个性质:

    (C_{m}^{n}=C_{m}^{m-n})

    (sum _{i=k}^{n} C_{i}^{k}=C_{n+1}^{k+1})

    即:杨辉三角第i列是第i-1列的前缀和

    凝视着这个性质,傻瓜也得到教训:

    (sum _{i=l}^{r} C_{i}^{k}=C_{r+1}^{k+1}-C_{l}^{k+1})

    题目要求

    (prod sum _{i=l}^{r} C_{i}^{k+i-l})

    (=prod sum _{i=l}^{r} C_{i}^{i-(k+i-l)})

    (=prod sum _{i=l}^{r} C_{i}^{l-k})

    (=prod (C_{r+1}^{l-k+1}-C_{l}^{l-k+1}))

    预处理阶乘逆元,O(1)回答

    复杂度O(N+M)

    代码

    (复杂度算错了不要在意)

    T2

    【错解】

    一看就是贪心嘛

    开始想的Prim,每个枚举所有边,找没选过的最小的边

    然后成功Hack了自己:

    5 6
    1 2 1
    1 3 2
    2 3 100
    3 4 0
    4 5 0
    5 3 0
    

    重构重构

    发现实际上出口就是父节点,而根节点没有父亲,就随便连一条

    而任意点都可以是根,所以是个最小生成环套树

    发现可能不连通,受Wuvin神题影响建了个超级源点,跟每个联通块连条边,允许联通块个数个环

    没考虑一个联通块多个环的情况 50pts

    【正解】

    并查集可以带东西啊

    记一个type表示i为根的并查集是根还是环套树

    在合并时:

    ①如果都是树,合并后是树

    ②如果一个树一个环套树,合并后是环套树

    ③如果两个环套树,不能合并

    复杂度O(MlogM)

    代码

    T3

    【错解】

    树。。。树上乱搞?

    先想的和父亲连边跑拓补序,发现不能确定

    咦?好像是个主席树

    怎么比较啊?放弃

    暴力写挂,0pts

    【正解】

    比较字符串:暴力,二分+哈希

    用主席树维护哈希值,左儿子hash相同往右跳,否则往左跳

    注意先特判全部相等的情况

    复杂度(O(Nlog^{2}N))

    好像卡19****17

    代码

  • 相关阅读:
    明确架构目标
    是什么浪费了我的时间
    精益求精,抑或得过且过[转]
    web界面应用的十种常见技术
    我对软件优化的一些想法
    最新31个非常棒的 Photoshop 网页设计教程
    sql2005提示工具程序
    转载:一篇深入了解.NET中栈和堆较好的文章
    推荐18个非常棒的Web和移动开发框架
    介绍一下这些工具FishAspnetLoader
  • 原文地址:https://www.cnblogs.com/lstoi/p/9797628.html
Copyright © 2020-2023  润新知