1. 程式人生 > >hdu 2050.折線分割平面

hdu 2050.折線分割平面

class n-2 hdu 2050 n) while scan problem n-1 pac

http://acm.hdu.edu.cn/showproblem.php?pid=2050

思路:直線分割平面的特殊情況

    第n個折線第時候:

  1. 折線的第一個射線與原有的(n-1)個折線的2(n-1)條邊相交,產生2(n-1)-1個線段(由兩個交點形成,將所在區域一分為二產生2(n-2)個新區域)和1個射線(產生1個新區域)和1個特殊的線段(由射線的起點和交點形成,這個特殊的線段在只有自己的時候不會產生新的區域,但是在與本折線的另一個射線所產生的特殊線段組合後會產生一個新區域)
  2. 折線的第二個射線與原有的(n-1)個折線的2(n-1)條邊相交,產生2(n-1)-1個線段和1個射線和1個特殊的線段(與本折線的第一條射線產生特殊線段組合共同產生1個新區域)

公式
f(n)=f(n-1)+{[2(n-1)-1+1]+[2(n-1)-1+1]+1}
=f(n-1)+4(n-1)+1
=f(n-2)+4(n-2)+1+4(n-1)+1

   ....

  =2n^2-n+1

#include<iostream>
#include<string.h>
using namespace std;
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
__int64 dp[10005]={0};
int
main() { int t; int a; scanf("%d",&t); while(t--) { cin >> a; cout << 2*a*a-a+1<<endl; } return 0; }

hdu 2050.折線分割平面