zoukankan      html  css  js  c++  java
  • Codeforce 287 div2 C题

    题目链接:http://codeforces.com/contest/507/problem/C

    解题报告:现在有一个满二叉树型的迷宫,入口在根结点,出口在第n个叶节点,有一串命令,LRLRLRLRLR.....,L表示当前向左走,R表示现在向右走,然后如果碰到如果下一步的点是已经走过的,则跳过这条命令,如果下两步都是走过的话,则回到该节点的父节点。问从根结点走到出口一共到过多少个节点,包括出口节点,不包括根结点。

    2e42de5cebf0bfdae7dd1e2ecf97673b77881867.png (650×500)

    这是一棵满二叉树,现在假设出口的E那个点,从1出发,向左走,很显然,出口跟我现在所在的不是在同一棵子树上面,但是,可以肯定的一点是,在这种情况时,即我现在所在的子树跟出口不是在同一棵子树时,我一定会先把我当前所在的子树的所有节点都走一遍才会进入出口所在的子树上,利用这个特点,我们可以把时间复杂度简化到h,只要我每次判断当前所在的点是不是跟出口在同一课子树,如果是,继续向下走,如果不是,不用向下走了,只要加上我所在的这颗子树的节点的总个数就可以了。我一开始错在对long long 型数作位移运算时,没有对1进行强制转化声明,但是直接这样一个1放在那里默认的是int型的,所以位移运算时就会溢出,导致了我的代码在小数据时都没有问题,h达到39时,就怎么也不对了。这点要注意,以前很少对long long 型做过位移运算,这点以后要注意。

  • 相关阅读:
    oracle登陆认证方式
    oracle用户管理
    oracle sqlplus常用命令
    瀑布开发模式和敏捷开发模式
    在C#中用RX库和await来实现直观的状态机
    C#实现简单的字符串加密
    双屏办公之体会
    利用json2csharp快速生成C#类
    .Net中的插件框架Managed Extensibility Framework
    解决NVidia显卡最大化和最小化窗口时的卡顿问题
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/4250942.html
Copyright © 2011-2022 走看看