问题 G: 折线分割平面

题目描述
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。

输入
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(n>0 && n<=10000),表示折线的数量。
输出
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。
样例输入
2
1
2
样例输出
2
7

做这种类型的题无非就是找规律,折线切割平面的规律我们发现并不好找。但是我们已经知道直线切割平面的规律非常好找,如下图:



从三条线的情况中可以看出,被直线切割的内部区域(绿色标记部分)有1个,外部区域(蓝色标记部分)有 2 x 3=6个;
四条线的时候,内部区域有1+2=3个,外部区域有2x4=8个;
五条线的时候,内部区域有1+2+3==6个,外部区域有2x5=10个;
由此可以发现规律:一条直线的时候内部区域M1=0;外部区域M2=1 x 2;
两条线的时候M1=0;M2=2 x 2;
三条线的时候M1=1;M2=2 x 3;
四条线的时候M1=1+2=3;M2=2 x 4;
……
N条线的时候M1=1+2+3+……+N-2;M2=2 x N;

因此,N条直线最多分割的区域有M=M1+M2个;

由直线的规律,接下来看看折线的区别:


不难看出,每条折线最多单独分割两个区域,而直线是四个,因此如果把每两条直线的一个端点相交,就变成了一条折线,被分割的区域就减少2。因此,如果要求N条折线分割的区域数目,只需求2N条直线分割区域数目M,再求出M-2N的大小即是N条折线切割的区域数目。有了思路,下面便是喜闻乐见的代码:

#include<stdio.h>
int linecut(int m)
{int i,ans,s=0;if(m==2)s=0;for(i=1;i<=m-2;i++){s+=i;}ans=s+2*m;return ans;//定义函数求出2m条直线切割的区域数目
}
int main()
{int n,m,i;scanf("%d",&n);for(i=0;i<n;i++)//n组测试数据{scanf("%d",&m);printf("%d\n",linecut(2*m)-2*m);//调用函数并在输出的时候直接减去2*m求得m条折线切割的区域数目}return 0;
}

原创博客,转载请注明出处,欢迎批评指正。

折线分割平面(图文解析)相关推荐

  1. HDOJ 2050 折线分割平面

    Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...

  2. 折线分割平面(hdoj 2050,动态规划递推)

    Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...

  3. HDOJ_ACM_折线分割平面

    Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...

  4. HDU_oj_2050 折线分割平面

    Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...

  5. 【递推DP技巧 hdu 2050 折线分割平面】

    我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示. Input ...

  6. HDU - 2050 折线分割平面(规律题)

    我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示.  Input ...

  7. 折线分割平面[HDU2050]

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. 折线分割平面(HDU-2050)

    Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...

  9. HDU 折线分割平面

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

最新文章

  1. Codeforces Hello 2019 D. Makoto and a Blackboard[DP+数论+概率期望]
  2. 安装JAVA 运行环境
  3. spring 异常捕获异常_使用Spring跟踪异常–第2部分–委托模式
  4. .NET Framework学习笔记(十)
  5. QPS 提升60%,揭秘阿里巴巴轻量级开源 Web 服务器 Tengine 负载均衡算法
  6. 只了解View的事件分发是不够的,来看下输入系统对事件的处理
  7. linux c 数据库编程,linux c 编程操作数据库(sqlite3应用)
  8. kudu : 扩容报错 Bad status: Not found: Unable to initialize catalog manager
  9. 可能是全网最全的 Java 日志框架适配、冲突解决方案
  10. GPS定位的优点和缺点与室内定位
  11. python爬取招聘网站源码及数据分析_Python爬取招聘网站进行数据分析,福利待遇一清二楚,高薪很简单...
  12. 程序员自编 “购房宝典” 火爆 GitHub!
  13. hyper v虚拟机启动黑屏怎么办?
  14. 华为scp快充协议详解_华为SCP快充技术曝光:支持“电荷泵”技术,最高可达20W...
  15. VmFusion 无法访问外网的原因以及解决方案
  16. 直通大厂web入门级网页快速开发(建议收藏)
  17. cad无法启动此程序 因为计算机中丢失,Win10无法启动CAD提示计算机中丢失ac1st16怎么办?...
  18. CE、FCC、ROSH、CCC认证分别是什么意思?
  19. 2021 年 Q4 随笔
  20. GNN教程:GAT算法(考虑邻居重要性)

热门文章

  1. Python海龟画图
  2. C++中加速cin与cout神器
  3. Python 批量提取Excel中的图片,图片文件名按指定列存储
  4. Luogu 1880 合并石子
  5. 径向基函数神经网络_神经网络
  6. 恩兔NS-1刷ARMBIAN教程
  7. Redis数据结构 GeoHash
  8. 漫步数学分析三十九——隐函数定理
  9. 修改Echarts源码实现柱状图的炫彩闪烁效果
  10. 解决无线路由器wds桥接频繁掉线的办法