HDU 2050(递推&递归_J题)解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2050

-----------------------------------------------------------------------------------

题意:用折线分割平面,求被分割成的平面的最大份数。

思路:首先思考直线分割平面,最多可以与之前的直线均有交点,第k条直线最多k-1个交点,最多可以增加k个平面。

折线也是同理:f(1)=2,f(2)=7,先画好前面n-1条折线,当增加第n条拆线时,此时与图形新的交点最多有2*2(n-1)个,所以分出的部分多出了2*2(n-1)+1

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
int T =0;
const int MAXN=1e5+10;
const int MAX =1e8+10;
int ans[MAXN];
int a=0;

int line(){
    ans[1]=2;
    for(int j=2;j<MAXN+2;j++){
        ans[j]=ans[j-1]+4*(j-1)+1;
    } 
    
    return 1;
}

int main(void){
    line();
    scanf("%d",&T);
    for(int i =0;i<T;i++){
        scanf("%d",&a);
        printf("%d\n",ans[a]);
    }
    return 0;

}
View Code

 

posted @ 2018-01-25 17:41  caomp  阅读(104)  评论(0)    收藏  举报