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; }

浙公网安备 33010602011771号