HDU2050(分平面问题)

分平面问题:

一、n条直线最多分平面问题。

n条直线最多可以把平面分成多少个区域?

此类问题主要采用递归的思想。当有n-1条直线时,平面最多被分成了f(n-1)块区域。如果要使第n条直线分的区域最多,就要让第n条直线与每条直线相交且交点不能重合。这样就会的到n-1个交点,将第n条直线分成了n-2条线段和两条射线。通过观察发现每一条线段或者直线都将其通过的区域一分为2,于是平面就多出了n块区域。

即:

f(n) = f(n-1) + n

= f(n-2) + (n – 1) + n

= f(1) + 2 + 3 + … + n

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

二、 n条折线最多分平面问题。

n条折线最多可以把平面分成多少个区域?

类比于直线。当有n-1条折线时,平面最多被分成了f(n-1)块区域。如果要使第n条折线分的区域最多,就让它的两条射线分别与每一条折线的两条射线相交且交点互不重合。这样第n条折线的每条射线上就得到了2(n-1)个交点,将射线分成了2(n-1)条线段和一条射线。但是折角处的两条线段之分出了一块区域,所以一共多出了4(n-1)+1块区域。

即:

f(n) = f(n-1) + 4(n – 1) + 1

= f(n-2) + 4(n – 2) + 4(n – 1) + 2

= f(1) + 4[1 + 2 + … (n-1)] + n

= 2n^2 + n

三、 封闭曲面分平面问题。

设有n条封闭曲线在平面上,任何两条封闭曲线相交于两点,任何三条封闭曲线不相较于一点,问这些封闭曲面把平面分割成的区域个数。

为了简化思考可将封闭曲线看成圆,当有n-1个圆形时将平面分成了f(n-1)块区域。现增加第n个圆,于是此圆的周边上有2(n-1)个点,曲线被分成了2(n-1)个圆弧,每个圆弧可使平面增加一个区域。于是平面增加了2(n-1)个区域。

即:

f(n) = f(n-1) + 2(n – 1)

= f(n-2) + 2(n – 2) + 2(n – 1)

= f(1) + 2[1 + 2 + … + (n – 1)]

= n^2 – n + 2

四、平面分割空间问题。

由类比的方法可以猜出,平面分割空间的个数应该与平面的交线个数有关。于是当有n-1个平面时将空间分成了f(n-1)块区域。增加第n个平面时,另其与每一个平面都有一条交线且每一条交线互不重合互不平行。于是平面上就有了n-1条直线。由问题一可知这些直线一共将次平面分成了n(n-1)/2+1块面,显然每一块面都可使空间多出一块区域。于是空间多出n(n-1)/2+1块区域。

即:

f(n) = f(n-1) + n(n – 1)/2 + 1

= f(n-2) + (n – 2)(n – 1)/2 + n(n – 1)/2 + 2

= f(1) + 1*2/2 + 2*3/2 + 3*4/2 + … + n(n – 1)/2 + (n – 1)

= [(1^2 + 2^2 + … + n^2) – (1 + 2 + … + n)]/2 + n + 1

由平方和公式 1^2 + 2^2 + … + n^2 = n(n + 1)(2n + 1)/6得

f(n) = (n^3 + 5n)/6 + 1

折线分割平面

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

Problem Description

我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。

Input

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。

Output

对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。

Sample Input

2
1
2

Sample Output

2
7

Author

lcy

Source

递推求解专题练习(For Beginner)

Recommend

lcy

Statistic | Submit | Discuss | Note

 1 #include<stdio.h>
 2
 3 int main()
 4 {
 5     int c;
 6     scanf("%d", &c);
 7     while(c--) {
 8         int n;
 9         scanf("%d", &n);
10         printf("%d\n", 2 * n * n - n + 1);
11     }
12     return 0;
13 }

时间: 2024-12-29 10:29:42

HDU2050(分平面问题)的相关文章

UVALive 6263 The Dragon and the knights --统计,直线分平面

题意:给n条直线,将一个平面分成很多个部分,再给m个骑士的坐标,在一个部分内只要有一个骑士即可保护该部分,问给出的m个骑士是不是保护了所有部分. 解法:计算每个骑士与每条直线的位置关系(上面还是下面),用0,1表示,所以每个骑士会有一个01串,最后统计出这n条直线分成的部分数(可能有平行的),然后排序每个骑士的01串,看有多少个处在不同部分的骑士(01串不同的个数),然后比较个数关系,得出答案. 代码: #include <iostream> #include <cstdio> #

折线分平面——杭电2050

根据直线分平面可知,由交点决定了射线和线段的条数,进而决定了新增的区域数.当n-1条折线时,区域数为f(n-1).为了使增加的区域最多,则折线的两边的线段要和n-1条折线的边,即2*(n-1)条线段相交.那么新增的线段数为4*(n-1),射线数为2.但要注意的是,折线本身相邻的两线段只能增加一个区域. 故:f(n)=f(n-1)+4(n-1)+2-1 =f(n-1)+4(n-1)+1 =f(n-2)+4(n-2)+4(n-1)+2 …… =f(1)+4+4*2+……+4(n-1)+(n-1) =

hdu2050(递推)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2050 (1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域. 析:可能你以前就见过这题目,这充其量是一道初中的思考题.但一个类型的题目还是从简单的入手,才容易发现规律.当有n-1条直线时,平面最多被分成了f(n-1)个区域.则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点.这样就会得到n-1个交点.这些交点将第n条直线分为2条射线和n-2条线断.而

折线分割平面(杭电2050)(递归的几种类型,数学推导)

折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17706    Accepted Submission(s): 12192 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平

递推算法之平面分割问题总结

这是一类问题,首先由直线划分区域到折线划分区域,再延伸到封闭图形划分区域,最后在推广为平面划分空间的问题. 一.n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域. 析:可能你以前就见过这题目,这充其量是一道初中的思考题.当有n-1条直线时,平面最多被分成了f(n-1)个区域.则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点. 这样就会得到n-1个交点.这些交点将第n条直线分为2条射线和n-2条线断.而每条射线和线断将以有的区域一分为二.这样就多出了

hdoj 2050 折线分割平面

折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19216    Accepted Submission(s): 13205 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面

平面分割问题

(1) n条直线最多分平面问题 题目:n条直线,最多可以把平面分为多少个区域. 解析:       当有n-1条直线时,平面最多被分成了f(n-1)个区域.      则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点.      这样就会得到n-1个交点.这些交点将第n条直线分为2条射线和n-2条线断.      而每条射线和线断将以有的区域一分为二.这样就多出了2+(n-2)个区域. 故:f(n)=f(n-1)+n f(n-1)=f(n-2)+n-1 --        

HDU - 2050 - 折线分割平面(数学 + dp)

题意: 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分 思路: 记住结论... 平面分割 n(n+1)/2+1 折现分割2n^2-n+1 封闭曲线分平面问题n^2-n+2 平面分割空间问题(n^3+5n)/6+1 dalao的推到过程:https://www.jianshu.com/p/18ed6a125e82 代码: #include<iostream> using n

分割问题

[a]n条直线最多分平面问题 n条直线,最多可以把平面分为多少个区域? 见K 切糕 递推关系:都将原来所有的区域分成两半,因此第n条直线会在原来的基础上再添加n个平面 f[0]=1,f[1]=2...f[n]=f[n-1]+n 推导公式f[n]=n*(n+1)/2+1 [b]a的改进 每次使用两条直线分割? 即是n相当于2n f[0] = 1f[1] = 4f[2] = 11...f[n]= f(n - 1) + 2 * n - 1 + 2 * n = f(n - 1) + 4 * n - 1