暑假集训——递推 P - 折线分区域
来源:互联网 发布:通达信炒股软件下载 编辑:程序博客网 时间:2024/04/26 10:56
Description
Input
Output
Sample Input
212
Sample Output
27
解题思路:
1递推递推,先分析下直线分割平面的情况,增加第n条直线的时候,跟之前的直线最多有n-1个交点,此时分出的部分多出了(n-1)+1;所以f[n]=f[n-1]+n-1+1;
2折线也是同理,f(1)=2,f(2)=7,先画好前面n-1条折线
当增加第n条拆线时,此时折线中的一条与图形的交点最多有2*(n-1)
因为n-1条折线相当于2*(n-1)条直线,那么一条折线就有2*2(n-1)个交点,
所以分出的部分多出了2*2(n-1)+1所以推出f(n)=f(n-1)+4*(n-1)+1,n>=2
还有f[n]=n(2n-1)+1,这是从递推公式中推出来的;
Description
Input
Output
Sample Input
212
Sample Output
28
3 三角形也去递推,f[1]=2;f[2]=8;增加的交点和增加的部分相同
平面本身是1部分.一个三角形将平面分成三角形内、外2部分,即增加了1部分,
两个三角形不相交时将平面分成3部分,相交时,交点越多分成的部分越多(见下图);
当增加第n个三角形时,三角形的一条边只能跟别的三角形的两条边相交
那么交点就增加了2(n-1),三条边就增加了3*2(n-1)个交点
所以推出f[n]=f[n-1]+6*(n-1);
另外,因为1个三角形时有2部分,所以n个三角形最多将平面分成的部分数是:
2+6×[1+2+…+(n-1)]=2+3n(n-1)
123456789101112131415
#include<stdio.h>int main(){ int n,m,i,a[10010]; a[1]=2;a[2]=8; for(i=3;i<=10000;i++) a[i]=a[i-1]+6*(i-1); scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%d\n",a[m]); } return 0;}
Description
Input
Output
Sample Input
212
Sample Output
27
解题思路:
1递推递推,先分析下直线分割平面的情况,增加第n条直线的时候,跟之前的直线最多有n-1个交点,此时分出的部分多出了(n-1)+1;所以f[n]=f[n-1]+n-1+1;
2折线也是同理,f(1)=2,f(2)=7,先画好前面n-1条折线
当增加第n条拆线时,此时折线中的一条与图形的交点最多有2*(n-1)
因为n-1条折线相当于2*(n-1)条直线,那么一条折线就有2*2(n-1)个交点,
所以分出的部分多出了2*2(n-1)+1所以推出f(n)=f(n-1)+4*(n-1)+1,n>=2
还有f[n]=n(2n-1)+1,这是从递推公式中推出来的;
Description
Input
Output
Sample Input
212
Sample Output
28
3 三角形也去递推,f[1]=2;f[2]=8;增加的交点和增加的部分相同
平面本身是1部分.一个三角形将平面分成三角形内、外2部分,即增加了1部分,
两个三角形不相交时将平面分成3部分,相交时,交点越多分成的部分越多(见下图);
当增加第n个三角形时,三角形的一条边只能跟别的三角形的两条边相交
那么交点就增加了2(n-1),三条边就增加了3*2(n-1)个交点
所以推出f[n]=f[n-1]+6*(n-1);
另外,因为1个三角形时有2部分,所以n个三角形最多将平面分成的部分数是:
2+6×[1+2+…+(n-1)]=2+6×
123456789101112131415
#include<stdio.h>int main(){ int n,m,i,a[10010]; a[1]=2;a[2]=8; for(i=3;i<=10000;i++) a[i]=a[i-1]+6*(i-1); scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%d\n",a[m]); } return 0;}
- 暑假集训——递推 P - 折线分区域
- 暑假集训——贪心 P - Yogurt factory 奶牛场
- 暑假集训第二周——递推 汉诺塔系列问题
- 暑假集训第二周——递推 献给杭电五十年校庆的礼物
- 暑假集训第二周——递推 X - 毛毛虫走路
- 暑假集训第二周——递推 S - 棋盘游戏
- 暑假集训第二周——递推 骆驼猜名字
- hdu 2050 递推,折线分平面
- 暑假集训第二周——递推 楼梯走法 AC女之杀手 小蜜蜂 骨牌铺方格 EOF排列
- 递推递归练习——P
- 暑假集训——破壳计划
- 2016暑假集训总结——Part1
- 2016暑假集训总结——Part2
- XYNU—ACM暑假集训第一次测试
- XYNU—ACM暑假集训第二次测试
- HDU2050 折线分区域 找规律 坑!!!!!
- 暑假集训第四周周三赛 B - Tiling_easy version骨牌 递推
- 暑假集训——贪心专题——F题
- Dijkstra算法几大模板
- 一步步构建3D引擎-------架构设计
- node.js 事件
- AnctionBar透明背景,自定义字体颜色大小,自定义overflow按钮
- 泡泡龙——代码结构规范
- 暑假集训——递推 P - 折线分区域
- HDOJ Find a way(两次bfs)
- AIDL(不完整)
- apt-get安装软件 子进程返回了一个错误号(100)
- SHELL入门教程(5)-算术运算
- JavaScript异常处理
- 千辛万苦进了一个很深层的目录,一不小心敲了“cd”后回车..
- Android中对于onMeasure()的理解
- solr中ik分词自定义词库和停止词