博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AcDream 1080 面面数 递推Or待定系数法
阅读量:4618 次
发布时间:2019-06-09

本文共 1099 字,大约阅读时间需要 3 分钟。

题意:问最少多少个过同一点的平面能够将空间分成N份。

解法:这题的基本思路肯定是求出x个平面最多能够划分出多少个子空间,然后二分枚举出答案。小涛神说了一种非常神的方法来解这一题,那就是得到三组最简单的解,假设最后的通项公式是一个最高次为1次的表达式,那么采用待定系数法用两组数据得到表达式然后使用第三组检验前两组得出的解。如果不相符的话那么再推出一个解,假设通项公式最高次为2次解方程...最后就能够得到这题的通项公式:f(x) = x*x - x + 2。

  当然,我是想使用递推公式来解决这一问题,由于三个平面最多将空间分成8份,而在增加一个平面的话,由于所有平面都要过一个点,那么三个平面就已经确定那一个交点,垂直于一个平面对空间结构进行投影,那么平面上将出现两条直线相交的情况,那么第四个平面同样也会这这个平面上投影出一条直线,那么这条直线最多分割3*2个空间,乘以2是因为投影的下面同样能够被分割。因此递推公式为:f[i] = f[i-1] + (i-1) * 2

代码如下:

#include 
#include
#include
#include
#include
using namespace std;int f[50005];const int lim = 44723;void pre() { f[0] = 1, f[1] = 2; int i; for (i = 2; f[i-1] < 2000000000; ++i) { f[i] = f[i-1] + 2 * (i-1); } // 44723}int main() { pre(); int T, x; scanf("%d", &T); while (T--) { scanf("%d", &x); if (x == 0) { puts("1"); continue; } printf("%d\n", lower_bound(f, f+lim, x) - f); } return 0;}

 

转载于:https://www.cnblogs.com/Lyush/archive/2013/03/19/2969773.html

你可能感兴趣的文章
ABP开发框架前后端开发系列---(1)框架的总体介绍
查看>>
POJ3255次短路
查看>>
装饰器原理
查看>>
[转]西点军校22条军规
查看>>
get the page name from url
查看>>
visual studio中csproj文件中的project guid改为小写 ( notepad++ 正则)
查看>>
TeeChart显示三维的图形,使用Surface
查看>>
如何使用 Idea 远程调试 Java 代码
查看>>
加密,解密
查看>>
在C#代码中应用Log4Net(一)简单使用Log4Net
查看>>
[转]如何写软件项目技术标
查看>>
每日站立会议个人博客五
查看>>
ddd
查看>>
死磕 java同步系列之AQS起篇
查看>>
利用Lucene把文本的字体格式进行改动,然后输出到一个新的文件里
查看>>
[Openstack] Expecting an auth URL via either --os-auth-url or env[OS_AUTH_URL]
查看>>
How to Create Modifiers Using the API QP_MODIFIERS_PUB.PROCESS_MODIFIERS
查看>>
待飞笔记(第一天 )
查看>>
用Winrar批量解压缩有密码文件方法,只需输入一次密码
查看>>
解惑好文:移动端H5页面高清多屏适配方案
查看>>