练习3-N
来源:互联网 发布:万方数据库的免费入口 编辑:程序博客网 时间:2024/06/06 08:46
题目:Problem N
Problem Description
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。<br><img src=../data/images/C40-1008-1.jpg>
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。<br><br>
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。<br><br>
Sample Input
212
Sample Output
27
题意:
用折线切割平面,其中,一条折线的头部不会造成切割;
思路:
1递推递推,先分析下直线分割平面的情况,增加第n条直线的时候,跟之前的直线最多有n-1个交点,此时分出的部分多出了
(n-1)+1;
2折线也是同理,f(1)=2,f(2)=7,先画好前面n-1条折线,当增加第n条拆线时,此时与图形新的交点最多有2*2(n-1)个,所以分出的部分多出了2*2(n-1)+1
所以推出f(n)=f(n-1)+4*(n-1)+1,n>=3
代码:
# include <iostream>using namespace std;int_fast64_t ff[10005];int f(){ ff[0] = 0; ff[1] = 2; for(int i = 2; i < 10005; i++) { ff[i] = ff[i-1] + 4*(i-1)+1; }}int main(){ f(); int n; cin >> n; while(n--) { int m; cin >> m; cout << ff[m] <<endl; } return 0;}
0 0
- 练习3-N
- 3n+1 C语言练习
- ACM练习3*n+1问题
- csdn编程练习之3n+1
- 练习n的阶乘
- 练习三 Problem N
- 快速N次方练习
- 第三章练习6,输出1+2+3+4+n小于8888的最大整数N
- ACM练习之hdoj1042《N!》
- 递推递归练习N
- 递推递归练习 N
- 递归递推练习 N
- 《递归递推练习》N
- 递推递归练习N
- setw(n),setfill(char c),setbase(int n)函数练习
- 递归练习--求1*1+2*2+...+n*n
- NBUT-2014暑期集训专题练习1 -> 二分法 N - N
- 2013秋13级预备队集训练习3 --E - The ? 1 ? 2 ? ... ? n = k problem
- 花生壳动态域名软件3重大版本:客户端支持微信远程管理
- 配置android app 方法数超过65k问题
- 【LQ系列】 BASIC-11~BASIC-15
- XML-schema约束
- 3.JVM线程引擎和内存共享区的交互及此背景下的程序计数器
- 练习3-N
- Git Commit Message 格式规范
- socket通过http上传下载
- VB Cells.find函数参数解释
- 流水号
- iOS学习应用开发就业课_004:UIButton时间处理
- 1020 Problem T
- 详解语句srcImage(cv::Rect(xRoi,yRoi,widthRoi,heightRoi)).copyTo(roiImage);
- MySql 5.7安装(随机密码,修改默认密码)两个坑