折线分割平面 HDU2050
折线我们可以看成两条线段,每条线段和其他的线段相交会增加一个部分,而这条折线的两条线段又会形成一个部分(图中的5),即
dp[n] = dp[n - 1] + 4(n-1) + 1
= dp[n - 1] + 4n - 3
代码:
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define int long long
int dp[10005];
signed main(){
IOS;
dp[1] = 2;
for(int i = 2;i <= 10000;++i) //初始化打表
dp[i] = dp[i - 1] + 4 * i - 3;
int tt,t;cin>>tt;
while(tt--)
cin>>t,cout<<dp[t]<<"\n";
return 0;
}
如果对折线不理解,可以先看看直线、圆形的递推: