HDU 2050 折线分割平面
2017-05-08 19:29
246 查看
参考http://blog.csdn.net/wu_lai_314/article/details/8219236
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
![](http://acm.hdu.edu.cn/data/images/C40-1008-1.jpg)
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个正整数n n<= 10000 ,表 示折线的数量。
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。
我们先从n条直线最多分割平面问题开始
每条直线与之前的n-1条直线相交,然后就有了n-2条线段和2条射线,就多了(n-2)+2=n个平面。
递推式为:f
=f[n-1]+n;
然后这个折线就是两条直线先后分,然后他们有一点相交,也就是少了两个面
f
=f[n-1]+(n-1)*2+1+(n-1)*2+2-2;
化简为 f
=2+(n-1)*(2*n+1);
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
![](http://acm.hdu.edu.cn/data/images/C40-1008-1.jpg)
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个正整数n n<= 10000 ,表 示折线的数量。
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。
我们先从n条直线最多分割平面问题开始
每条直线与之前的n-1条直线相交,然后就有了n-2条线段和2条射线,就多了(n-2)+2=n个平面。
递推式为:f
=f[n-1]+n;
然后这个折线就是两条直线先后分,然后他们有一点相交,也就是少了两个面
f
=f[n-1]+(n-1)*2+1+(n-1)*2+2-2;
化简为 f
=2+(n-1)*(2*n+1);
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> using namespace std; const int maxn = 10005; long long f[maxn]; void ini() { f[1]=2; f[2]=7; for(int i=3;i<=10000;i++){ int temp=i*2-2; f[i]=f[i-1]+temp+1+(temp+2)-2; } } int main() { int C; scanf("%d",&C); // ini(); while(C--) { long long n; scanf("%I64d",&n); cout<<2+(n-1)*(2*n+1)<<endl; } return 0; }
相关文章推荐
- HDU 2050 折线分割平面
- 【HDU 2050】折线分割平面
- hdu 2050 折线分割平面 #DP#递推公式
- HDU-2050 折线分割平面 找规律&递推
- HDU 2050 折线分割平面(根据直线递推)
- hdu 2050 折线分割平面(解析,直线,平行线,折线,三角形)
- HDU 2050 折线分割平面
- HDU 2050 折线分割平面 (递推)
- hdu 2050 折线分割平面
- hdu-oj 2050折线分割平面详解
- HDU 2050 折线分割平面 (递推)
- hdu 2050 折线分割平面(递推,dp)
- HDU 2050 折线分割平面
- hdu 2050 折线分割平面
- HDU 2050 折线分割平面 (递推)
- hdu 2050 折线分割平面
- HDU 2050 折线分割平面
- HDU 2050 折线分割平面
- 折线分割平面 HDU - 2050 (找规律)
- HDU 2050 折线分割平面