题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2050
题目大意:
求N条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线
最多可以将平面分成7部分,具体如下所示。
思路:
直线分割平面时,每增加N个结点,增加N+1个面。设f(N)是N条直线所能分成最多个面的个数。
则f(N) = f(N-1) + N,且f(1)= 2,推得:f(N) = N*(N+1)/2+1。当N为折线节点时,
L(N) = f(2*N) - 2*N。因为每增加1个折线,增加两个直线,这是f(2*N),每多1个顶点,比直线
就少两个面,这是2*N。最后的结果为L(N) = 2*N*N - N + 1。
AC代码:
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int main() { int T,N; cin >> T; while(T--) { cin >> N; cout << 2*N*N - N + 1 << endl; } return 0; }
时间: 2024-10-16 06:56:07