简单题意
求n条折线分割平面的最大数目。
解题思路形成过程
拿到这个题的时候,就联想起,高中的时候听过自主招生的题,其中有一道题就是,用直线分割平面最大区域数(听说当年华罗庚出了一个用直线分割空间的题),这个其实就是递归,直线的情况是若要加上第n根直线分割最多,就要让n-1根分割最多的情况下,让第n根直线,与前面的n-1根直线都有交点,递推关系就出来了,折线的情况也是类似,麻烦的就是求出第n个折线增加的数量,当增加第n条拆线时,此时与图形新的交点最多有2*2(n-1)个,这样就多出了2*2(n-1)+1个面。
感想
又忘了int盛不下大数,虽然自主招生的学的知识没用上,但是ACM用上了,就是这么巧,学习知识不能抱着功利心,万一哪天用上了呢。。
AC代码
#include<iostream>
#include<stdio.h>
#include<fstream>
using namespace std;
int main(){
int t,n;
__int64 a[10005];
a[1]=2;
for(int i=2;i<=10000;i++){
a[i]=a[i-1]+4*(i-1)+1;
}
cin>>t;
while(t--){
cin>>n;
cout<<a[n]<<endl;
}
return 0;
}