zoukankan      html  css  js  c++  java
  • Concrete Math 混凝土数学(具体数学)随笔

    第一章:Recurrent Problems

    三个例题:THE TOWER OF HANOI1.2 LINES IN THE PLANETHE JOSEPHUS PROBLEM

    很有意思,讲的很好!

    三个都是递推问题,我学了以后,感触很深,现在就讲讲本蒟蒻的心得吧~

    汉诺塔问题:一个递推,原本的很简单,关键是例题的变种!

    LINES IN THE PLANE

    给你n条直线,问这n条直线最多可将平面划分为多少个区域?

    书上告诉我们,我们应该先从小数据开始。

    L0=1这是显然的,L1=2,L2=4,这些都能很快地得出。于是我们开始想,我们应该怎么样切第n刀,能将形成的用n-1刀切成的平面增加的更多?

    经过简单的分析可得出,在第n刀时,最多也就只能新增加n个区域,于是,递推方程为:Ln=Ln-1+n; L0=1;此时,解递推方程(求助于数竞党)

    Ln=n*(n+1)/2+1;

    书上开始拓展,像V字这样切,最多可分得的平面有多少?额额,我不会,书上的方法太巧妙了。把V字看成两条相交的直线只是在相交的这个节点停住了,没有继续延伸下去,所以每有一个V字就代表有两个平面没有加入到新的区域,这样Zn=L2n-2N=2n^2-n+1;

    THE JOSEPHUS PROBLEM

    书上应该是最详细的版本,给出了当报数间隙是每隔一个人的通用O(1)解法,和其他间隙的递推公式,我读这一章时思考了很久才基本读懂,但还是有一些是不会的,望大神指点。

    偶数时:我们发现,如图所示:

    此时我们假设最后一幅图的幸存者是J(n),那么很容易推出,第一幅图J(2n)=2J(n)-1!;奇数时,得出J(2n+1)=2J(n)+1; J(1)=1;

    关于

    这个的证明,书上有两种:

    第一种:

    但我始终不知道那个式子怎么推出来的,TAT,这也是我最困惑的地方,望解答!

    第二种看懂了:

    简单点说首先明确一点当人数是2^n次方时,幸存者总是1!(可由前面式子推出)。那么我们把n分解为2^k+m2^k表示离n最近的那个数,则当过了2^k,幸存者是1,如果多了m个人,则又要进行新一轮的剔除,则刚好是2l+1,此处是关键。

  • 相关阅读:
    ASP.NET 2.0的页面缓存功能介绍
    第五课 主定理
    HDU 1051 Wooden Sticks
    一行代码让浏览器变编辑器
    算法概论习题1001Forest
    第七课 寻找强连通分量
    8223. Tiling a Grid With Dominoes
    迷宫
    第八课 最小生成树之Kruskal
    解决 Ubuntu 12.04 无法调节屏幕亮度的问题
  • 原文地址:https://www.cnblogs.com/cssystem/p/2913045.html
Copyright © 2011-2022 走看看