HDOJ-2050(递推,找规律)(折线分割平面)
2016-01-25 13:53
288 查看
HDOJ-2050(递推,找规律)(折线分割平面)
Total Submission(s): 23230 Accepted Submission(s): 15824
[align=left]Problem Description[/align]
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。
Sample Input
2
1
2
Sample Output
2
7
思路:和n条直线最多能把平面分成多少个部分规律相同,但需要进一步处理。
把画折线当作画直线处理即:每画一条折线,就当作画两条直线处理,最后由于两条直线相交时延长线就不再画出。所以在两条直线的基础上,减去2(折线情况比直线情况少2个部分,见图)
My solution:
/*2016.1.25*/
折线分割平面
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23230 Accepted Submission(s): 15824
[align=left]Problem Description[/align]
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。
Sample Input
2
1
2
Sample Output
2
7
思路:和n条直线最多能把平面分成多少个部分规律相同,但需要进一步处理。
把画折线当作画直线处理即:每画一条折线,就当作画两条直线处理,最后由于两条直线相交时延长线就不再画出。所以在两条直线的基础上,减去2(折线情况比直线情况少2个部分,见图)
My solution:
/*2016.1.25*/
#include<stdio.h> int guilv(int n)//也可以用递归实现,不过递归太耗时 { int sum=2,i;//sum初始化为2 for(i=2;i<=n;i++) //sum+=(((i-1)*2+1)*2-1); sum+=4*i-3; return sum; } int main() { int i,j,n; scanf("%d",&n); while(n--) { scanf("%d",&i); j=guilv(i); printf("%d\n",j); } return 0; }
相关文章推荐
- Dev汉化
- 华为USG夸三层交换机识别客户端MAC地址的配置方法
- 01背包问题详解
- TCP的ACK确认系列 — 延迟确认
- 微信公众号与服务器对接验证
- AngularJS之手动加载模块app和controller
- Javascript必须掌握的js库
- linux运维管理之Puppet
- 无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站。
- EventBus 使用详解(二)——EventBus 使用进阶
- 富文本编辑器插件汇总
- 1121 - Subsequence
- 结构体. ->操作符的内涵
- 数学常用公式及规律、结论(二)
- 学习笔记之bootstrap+thinkphp分页样式
- 加载网络图片的方法
- win10组合键失效 可能是驱动异常
- storyBoard方式ScrollView的AutoLayout
- MyEclipse 使用 CVS 版本控制-冲突解决方法
- 用ant的build.xml构建自动化打包android apk 完全详解(打包系列教程之二)