zoukankan      html  css  js  c++  java
  • HDU 1290 献给杭电五十周年校庆的礼物(面分割空间 求得到的最大空间数目)

    传送门:

    献给杭电五十周年校庆的礼物

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 12835    Accepted Submission(s): 7197


    Problem Description
    或许你曾经牢骚满腹
    或许你依然心怀忧伤
    或许你近在咫尺
    或许你我天各一方

    对于每一个学子
    母校
    永远航行在
    生命的海洋

    今年是我们杭电建校五十周年,这是一个值得祝福的日子。我们该送给母校一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。

    想象着正式校庆那一天,校长亲自操刀,把这个大蛋糕分给各地赶来祝贺的校友们,大家一定很高兴,呵呵,流口水了吧...

    等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢?

    做不出这个题目,没有蛋糕吃的!
    为-了-母-校-,为-了-蛋-糕-(不是为了DGMM,枫之羽最会浮想联翩...),加-油-!
     
    Input
    输入数据包含多个测试实例,每个实例占一行,每行包含一个整数n(1<=n<=1000),表示切的刀数。
     
    Output
    对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行。
     
    Sample Input
    1 2 3
     
    Sample Output
    2 4 8
     
    Author
    lcy
     
    Source
     
    Recommend
    lcy
     
    分析:
     
        线分割平面得到的最大平面数:
     
        第n条直线和n-1条直线相加,也就是最多有n-1个交点
        最多被分成n段,每一段二分成其所在区域,所以最多多了n个区域
     
        其递推公式即为:f(n)=f(n-1)+n;
     
        递归一下,就得到f(n)=1/2*(n*n+n)+1;

        平面分割空间得到的最大空间数:
     
        若要第四个平面将空间分为最多部分,就要它与前三个平面都相交,
        且交线不重合。则第四个平面与前三个平面都相交,交线不重合,
        有三条交线,这三条交线都在第四个平面内,
        那么要想使这四个平面分空间为最多部分,
        就要使这三条交线分一个平面为最多部分。
        显然,三条直线分一个平面最多为7部分。
        所以,四个平面分空间数最多为:
        三个平面最多分平面数加上三条直线最多分平面的部分数:8+7=15。
        推广到一般情况,n个平面最多可分空间为f(n)部分,
        第n个平面与n-1个平面分别相交且交线不重合,
        问题转化为n-1条直线最多将一个平面分成几部分。
     
        递推公式即为:g(n)=g(n-1)+f(n-1);
     
        把上面的公式递归一下,就得到通项公式:g(n)=(n*n*n+5*n+6)/6;
     
      code:
      
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            LL x=(n*n*n+5*n+6)/6;
            printf("%I64d
    ",x);
        }
        return 0;
    }
  • 相关阅读:
    构建自己的C/C++插件开发框架(四)——核心层设计和实现
    构建自己的C/C++插件开发框架(二)——总体功能
    对企业来说,要放在第一位的是什么
    深入理解C++的动态绑定和静态绑定
    构建自己的C/C++插件开发框架(三)——总体结构
    管道和过滤器
    层模式——面向模式的体系结构学习笔记
    使用信元流(TLVStream)规范、简化模块(C/C++)间交互
    推荐博客
    Android 操作系统的内存回收机制
  • 原文地址:https://www.cnblogs.com/yinbiao/p/9326060.html
Copyright © 2011-2022 走看看