zoukankan      html  css  js  c++  java
  • BestCoder Round #53 (div.1)

    Problem A:

    题目大意:

    给出以节点1为根的一棵树A,判断它是否是特殊的。一棵树是特殊的当且仅当不存在和它不完全相同的一棵树B,使得A中点i到点1的距离和B中相等。

    题解:

    假设一个点x的深度是d,它的父亲是y,如果存在一个深度为d-1的点z,那么把x从y下面移到z下面就可以得到树B了。所以求出每个深度的点的个数,只有当所有深度的点的个数都为1,最大深度的点的个数任意的时候 树是特殊的。


    Problem B:

    题目大意:

    给出N个点N条边的无向图判断是否存在哈密顿路。 N<=1000.

    题解:

    一开始没看到边也是N条,然后去各种百度哈密顿路的求法......

    我的做法是:

    先去掉重边和自环,然后判断连通性.如果不连通那么肯定不存在。如果连通,那么剩下的只可能是N-1条边或者N条边。

    考虑N-1条边的情况,是一棵树,草稿纸上画一下可以发现所有点的度数必须小于等于2才有哈密顿回路。

    考虑N条边的情况,是一棵树上加了一条边。所以枚举删去一条边,然后用N-1条边时的判断方法搞。复杂度O(N),但是有100组数据,所以TLE了。

    优化:在连通图图的前提下,如果存在哈密顿路,肯定是一条链上加了一条边的样子。所以最多有2个点的度数是3,其他点的度数小于等于2. 而且如果所有点的度数都小于等于2那么一定存在。 所以好多case就可以直接判断了。  不是很完美,但是还是水过了。。

    官方题解是从度数最小的点开始DFS,复杂度就是O(N)的。不知道为什么。


    Problem C:

    有一棵nn个节点的树。令1号点为根且令d_idi​​为1号点到ii号点的距离。
    
    选出至少两个节点。显然,一共有2^n-n-12n​​n1种选取的方案。等概率的随机选取一种方案。接着,令ff为选取的点中d_idi​​的最大值,gg为选取点中d_idi​​的次大值(ff可能等于gg)。
    
    最后要知道frac{(f+1)(g+1)}{f+1+g+1}f+1+g+1(f+1)(g+1)​​的期望值。   N《=100000


    题解:
    先求出距离,然后排序,枚举最大值v[j]和次大值v[i], 当 j-i>=65的时候 概率就很小了,分母是2^(n-i+1) 级别的, j-i>=60的时候 就不必计算了。 和之前CF的一道题差不多。

    A了3题拿到了Rank 5. 好开心。

     

  • 相关阅读:
    ASP.NET MVC —— Model之一模型模板
    【转】METADATATYPE的使用,MVC的MODEL层数据验证
    bootstrap 全局 CSS 样式
    jQuery EasyUI API 中文文档
    基础知识--:before伪元素和:after伪元素
    960CSS框架,之前有用过 了解下框架基本原理
    CSS框架960Grid从入门到精通一步登天
    web网页的表单排版利器--960css
    文本编辑器Nano实用快捷键
    yum服务器设置
  • 原文地址:https://www.cnblogs.com/vb4896/p/4770304.html
Copyright © 2011-2022 走看看