HDU 2047 折线分割平面(分割平面)

折线分割平面

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 24706    Accepted Submission(s): 16782

Problem Description

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

Input

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

Output

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

Sample Input

2
1
2

Sample Output

2
7

Author

lcy

题解:

当直线分割平面时,每增加n个节点,则增加n+1个面
设x(n)是n条直线所能分割的平面最多的个数,则x(n)=x(n-1)+n且x(1)=2;
推得n=1,2,3,4,....,x(n)=2,4,7,11,...n(n+1)/2+1;
当你为折线的节点时,L(n)=x(2n)-2n,因为每增加1条折线,就增加2条直线,
每多一个顶点,就比直线的情况减少2个面。所以推出公式:2*n*n-n+1。

AC代码:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdlib>
#include<iomanip>
#include<algorithm>
typedef long long LL;
using namespace std;

int main()
{

	int n,t;
	cin>>t;
	while(t--)
	{
		cin>>n;
		printf("%d\n",2*n*n-n+1);
	}
	return 0;
}
 

时间: 2024-08-28 15:36:14

HDU 2047 折线分割平面(分割平面)的相关文章

hdu 2050 折线分割平面 (递推)

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

hdu 2050 折线分割平面(递推公式)

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

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

平面分割问题

(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 --        

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

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

数学:平面分割直线

我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示.折线分割平面" alt="杭电acm2050 折线分割平面" src="http://static.oschina.net/uploads/img/201509/07110015_GMTF.jpg"> Input 输入数据的第一行是一个整数C,表示测试实例的个数,然后

(转)数据库表分割技术浅析(水平分割/垂直分割/库表散列)

数据库表分割技术包含以下内容:水平分割/垂直分割/库表散列.接下来将对以上分割进行详细介绍,感兴趣的朋友可以了解下,对你日后维护数据库是很有帮助的 一.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队.更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小表. 水平分割根据某些条件将

C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出【转】

本文转载自;http://www.cnblogs.com/easyfrog/archive/2011/12/26/C_strstr_split_string.html C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出 strstr() 命令是在原字符串中查找指定的字符串第一次出现的地址,用这个特性可以实现字符的分割,判断是否包涵等功能: 下面的这个例子是实现 字符串以分割串分割输出: 1 #include <stdio.h> 2 #include <strin

(转载)数据库表分割技术浅析(水平分割/垂直分割/库表散列)

一.数据库表分割技术 数据库表分割技术包含以下内容: 水平分割 垂直分割 库表散列 1.1.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混 乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队.更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小表. 水平分割根据某些条件将数据放到两个或多个独立的表中.即按记录进分分割,不同的记录