码迷,mamicode.com
首页 > 其他好文 > 详细

HDU2050 折线分割平面【递推】【计算几何】

时间:2015-04-21 09:40:05      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2050


题目大意:

求N条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线

最多可以将平面分成7部分,具体如下所示。

技术分享


思路:

直线分割平面时,每增加N个结点,增加N+1个面。设f(N)是N条直线所能分成最多个面的个数。

则f(N) = f(N-1) + N,且f(1)= 2,推得:f(N) = N*(N+1)/2+1。当N为折线节点时,

L(N) = f(2*N) - 2*N。因为每增加1个折线,增加两个直线,这是f(2*N),每多1个顶点,比直线

就少两个面,这是2*N。最后的结果为L(N) = 2*N*N - N + 1。


AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

int main()
{
    int T,N;
    cin >> T;
    while(T--)
    {
        cin >> N;
        cout << 2*N*N - N + 1 << endl;
    }

    return 0;
}



HDU2050 折线分割平面【递推】【计算几何】

标签:

原文地址:http://blog.csdn.net/lianai911/article/details/45165603

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!