题目链接:https://cn.vjudge.net/problem/HDU-2050
题意
算了吧,中文题不解释了
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。
比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
思路
这里为了方便说明,假设有n个折线的部分最多的图叫做图n
我们可以发现,任意图n中的每个射线都穿过了2n-2条射线,也就是任意两条射线两两相交
设想现在我们在图n中放上两条射线,想让图n变成图n-1
就必须让这两条射线每个都穿过图n中的2n条射线
而且将要被穿过的两条旧射线之间必然有一个小部分,会被新射线穿过,变成两个小部分
且最后被穿过的旧射线后的一个小部分,也会被新射线穿过,变成两个小部分
这样一来,就可以写出递推公式:
\[a_n=a_{n-1}+4n-3
\]
\]
代码
#include <cstdio>
int n, ans[10000+5];
void init(void){
ans[1]=2;
for (int i=2; i<10000+5; i++)
ans[i]=ans[i-1]+4*i-3;
}
int main(void){
init();
scanf("%*d");
while (scanf("%d", &n)==1 && n)
printf("%d\n", ans[n]);
return 0;
}
None | 1548kB | 269 | G++ | 2018-02-07 22:59:09 |