传送门:

http://acm.hdu.edu.cn/showproblem.php?pid=1249

三角形

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9065    Accepted Submission(s): 5946

Problem Description
用N个三角形最多可以把平面分成几个区域?
 
Input
输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).
 
Output
对于每组测试数据,请输出题目中要求的结果.
 
Sample Input
2
1
2
 
Sample Output
2
8
 
Author
Ignatius.L
 
分析:
两种分析方法:
 
第一种:
可以画一个圆,圆里放一个内正三角形。当放入第二个时,我们就把它转化为把已有的第一个三角形围着同心
轴稍微往右转一点点(向左转一样的),那么,第二个三角形的每一条边都会与第一个三角形的其中两条边相交
,这样就可得3*1*2+2个区域,3表示3条边,1表示第二个三角形的每一条边都会与第一个三角形的其中两条边相
交后得到一个三角形,2表示2个三角形,+2则表示外面的区域和同有的2个三角形共有的一个区域。同样第三个
三角形会与第一第二个三角形都有两条边相交。可得:3*2*3+2
由些可得,n个三角形:3*(n-1)*n+2       
 
第二种:
我们知道,对于第i个三角形来说,其前面已经有了(i-1)个三角形==>有(3i-3)条边,对于第i个
三角形,其每一条边最多能和之前的每个三角形的2条边有交点,即能和前面的(2i-2)条边各有
一个交点,而这些交点会把第i个三角形的一条边分割成(2i-1)条线段,每一条线段会增加一个平面,这样3条边就增加了(2i-1)×3个平面,考虑到在三角形的三个顶点,在每一个顶点处相邻的两个线段并不会增加平面的数目,所以在三个顶点处的6个线段实质上只增加了3个平面,所以要减去这3个多算的平面数,这样,第i个三角形就会比i-1个三角形形成的平面数多出(2i-1)×3-3=6(i-1)个了,即递推关系为:f(n)=f(n-1)+6×(i-1)。
 
code:
#include<bits/stdc++.h>
using namespace std;
#define max_v 10010
int main()
{
int a[max_v];
a[]=;
a[]=;
for(int i=;i<max_v;i++)
{
a[i]=a[i-]+*(i-);
}
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
printf("%d\n",a[n]);
}
return ;
}
 

HDU 1249 三角形(三角形分割平面)的更多相关文章

  1. HDU 2050(折线分割平面)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2050 折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    ...

  2. HDU 2050:折线分割平面

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

  3. hdu1249 三角形分割平面---递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1249 题目大意: 用N个三角形最多可以把平面分成几个区域? 思路: 知道了直线和折线分割平面的情况这 ...

  4. HDU 2050 折线分割平面(转)

    折线分割平面 http://acm.hdu.edu.cn/showproblem.php?pid=2050 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微 ...

  5. hdu 2050:折线分割平面(水题,递归)

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

  6. HDU 2050 折线分割平面 (数学)

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

  7. hdu 2050 折线分割平面 (递推)

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

  8. hdu 2050 折线分割平面(递推公式)

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

  9. HDU - 2050 - 折线分割平面(数学 + dp)

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

随机推荐

  1. GC回收策略

    判读一个对象是否“已死”: 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用的. 至少主流的J ...

  2. flight学习笔记

    Flight::db()-> getOne("select 1"); 返回结果:1 Flight::db()-> getRow ("select 1, 2 f ...

  3. Git错误解决(windows版本下的Git Shell)

    第一个问题:怎么也不能将自己本地仓库代码pull到GitHub网站上? git push origin master Warning: Permanently added 'github.com,19 ...

  4. 深入理解javascript原型和闭包_____全部

    http://www.cnblogs.com/wangfupeng1988/p/3977924.html

  5. 关于开发Cesium造成的电脑风扇狂飙的问题

    最近在开发Cesium的项目,每次一打开浏览器渲染3D 模型.风扇就狂飙起来,进任务管理器查看发现集显使用率100%,独显使用率0%.使用的是集显进行渲染.怪不得风扇会飙起来.既然知道问题所在,解决的 ...

  6. console的一些方法

    原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485510&idx=2&sn=0adff5754a2 ...

  7. Scrapy安装教程 pip 或 conda 两种安装方法.

      cmd: pip -V    查看pip版本 pip install --upgrade pip        升级最高版本 https://sourceforge.net/projects/py ...

  8. jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件

    jQuery框架学习第一天:开始认识jQueryjQuery框架学习第二天:jQuery中万能的选择器jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQuer ...

  9. Django—Cookie and Session

    一.Cookie Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密). 1. 应用 服务器可以利用Co ...

  10. CSS居中问题:块级元素和行级元素在水平方向以及垂直方向的居中问题

    元素的居中问题是每个初学者碰到的第一个大问题,在此我总结了下各种块级 行级 水平 垂直 的居中方法,并尽量给出代码实例. 首先请先明白块级元素和行级元素的区别 块级元素 块级元素水平居中 1:marg ...