(step 3.1.5)hdu 2050(折线分割平面)

146 篇文章 1 订阅

题目大意:输入折线的数目。求这n条折线最多能把原来的平面分成多少个???


解题思路:

1)直线:
最多可分为(1/2)*n*(n+1)+1块区域
折线:
那就是可以分成(2×n^2-n+1)块区域

2)这种类型的题目,在acm编程中比较经典,这里我们由浅入深来学习下:
(1)在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相

交于一点,试问这些直线将圆分成多少区域。
很容易看出递推关系,每新增一条直线,都将原来所有的区域分成两半,因此第n条直线会在原来的基础

上再添加n个平面,函数递推关系式如下:

递推公式1:

f(0) = 1
f(1) = 2
f(2) = 4
...
f(n) = f(n - 1) + n

通项公式推导1:

f(n)
= f(n - 1) + n
= f(n - 2) + n + (n - 1)
= ...
= f(0) + n + (n - 1) + ... + 1
= 1 + (1 + n) * n / 2
(2)若每次使用两条直线分割,即此时的n相当于原来的2n,可得:
递推公式2:

f(0) = 1
f(1) = 4
f(2) = 11
...
f(n) = f(n - 1) + 2 * n - 1 + 2 * n = f(n - 1) + 4 * n - 1

通项公式推导2_1:

f(n)
= f(n - 1) + (4 * n - 1)
= f(n - 2) + 4 * (n - 1) - 1 + (4 * n - 1)
= ...
= f(0) + (4 * 1 - 1) + (4 * 2 - 1) + ... + (4 * n - 1)
= 1 + 4 * (1 + 2 + .. + n) - n
= 1 + 4 * (1 + n) * n / 2 - n
= 1 + 2 * n * n + n

上面的推导公式比较复杂,其实也可以直接将通项公式推导1中推导结果的n用2n替代,这样就容易理解多

了:
通项公式推导2_2:

f(n)
= 1 + (1 + (2 * n)) * (2 * n) / 2
= 1 + 2 * n * n + n
(3)若是普通直线,相交处所分割的平面为4份,而折线为两份,即每次分割比上面所考虑的情况少2份

,那么只要在上述情况的每次分割时减去2就能得到本题的结果了。

递推公式3:

f(n)
= f(n - 1) + 4 * n - 1 - 2
= f(n - 1) + 4 * n - 3
通项公式:

f(n)
= 1 + 2 * n * n + n - 2 * n
= 1 + 2 * n * n - n
对于(3)这种类型,还有另外一种很好的解释(分享下!!):
分割平面的个数=交点个数+顶点个数+1
令f(n-1)为前n-1条折线分割的平面数,当添加第n条折线时。
因为每一条边与前n-1条折线的两条边都相交,故增加的交点数为2*2*(n-1),顶点增加1,故
f(n)=f(n-1)+4(n-1)+1
f(n-1)=f(n-2)+4(n-2)+1
....
f(2)=f(1)+4*1+1
f(1)=2
f(n)-2=4((n-1)+(n-2)+...+1)+(n-1)=4*((1+n-1)*(n-1)/2)+n-1=2(n*n-n)+n-1
f(n)=2n^2-n+1

可以得出公式f(n)=2n^2-n+1


代码如下:

/*
 * 2050_1.cpp
 *
 *  Created on: 2013年8月13日
 *      Author: Administrator
 */


#include <stdio.h>

int main(){
	int t;
	scanf("%d",&t);
	while(t--){
		int n;
		scanf("%d",&n);
		printf("%d\n",2*n*n-n+1);
	}
}


HDP 3.1.5是Hortonworks Data Platform(Hortonworks数据平台)的一个版本,Ubuntu是一个流行的开源操作系统,而Ambari 2.7.5是一个用于管理Hadoop集群的开源工具。 HDP 3.1.5是Hortonworks为大数据分析和处理提供的软件套件。它包括了一系列的开源组件,如Hadoop、Hive、HBase、Spark和Kafka等,可以用于存储和分析大规模数据。HDP 3.1.5版本带来了许多新功能和改进,提高了数据处理性能、安全性和可靠性。 Ubuntu是一个流行的开源操作系统,特点是易用性和稳定性。它支持HDP 3.1.5,并提供了包管理工具,方便用户安装和管理HDP的软件包。 Ambari 2.7.5是一个开源的集群管理工具,用于配置、监控和管理Hadoop集群。它提供了一个直观的Web界面,方便用户进行集群的配置和管理。Ambari 2.7.5版本为用户带来了更加稳定和高效的集群管理功能,并修复了一些bug。 结合使用HDP 3.1.5、Ubuntu和Ambari 2.7.5,用户可以方便地部署、配置和管理Hadoop集群。通过Ambari的直观界面,用户可以轻松监控集群的状态,并进行必要的配置和调整。Ubuntu作为操作系统,为HDP和Ambari提供了高度稳定和可靠的平台,确保集群正常运行。 总而言之,HDP 3.1.5提供了丰富的大数据处理工具,Ubuntu作为操作系统提供了稳定的平台,而Ambari 2.7.5则提供了集群管理的功能,使用户能够更方便地部署、配置和管理Hadoop集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值