HDU 献给杭电五十周年校庆的礼物 1290 递推

题目链接:

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

题目大意:

n刀最多可以把一块蛋糕切多少块

题目分析:

假如我们按照立体考虑的话,这题就非常不容易作, 我们的思维是 降低题目的维度。

1.首先我们要明白,蛋糕每多出一个面,就会将这个蛋糕多分出来一块

2.我们一刀下去是一个平面,但是其余的平面会与这个新增的平面相交,会在这个新增的平面上产生n-1条线, n-1条线 最多能把平面分为多少份,

所求的就是我我们新增的平面数,我们就可以求出新增的块数。

3.我们知道 n个平面最多将平面分为  n*(n-1)/2 + 1  份

因此我们的 切蛋糕的递推公式为    dp[n] = dp[n-1] + n*(n-1)/2 +1

 1 #include <iostream>
 2 #include <queue>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <cstdlib>
 6 #include <stack>
 7 #include <algorithm>
 8 #include <vector>
 9 #include <string>
10 #include <cmath>
11 using namespace std;
12 const long long  maxn =1005;
13 const long long  INF = 0xfffffff;
14
15 int main()
16 {
17     int dp[maxn] = {1}, n;
18     for(int i=1; i<maxn; i++)
19         dp[i] = dp[i-1] + i*(i-1)/2 + 1;
20     while(cin >> n)
21     {
22         cout << dp[n] << endl;
23     }
24     return 0;
25 }
时间: 2024-12-07 02:44:06

HDU 献给杭电五十周年校庆的礼物 1290 递推的相关文章

hdu 1290 献给杭电五十周年校庆的礼物

献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7236    Accepted Submission(s): 3936 Problem Description 或许你曾经牢骚满腹 或许你依然心怀忧伤 或许你近在咫尺 或许你我天各一方 对于每一个学子 母校 永远航行在 生命的海洋 今年是我们杭电建校五十周年,

hdoj 1290 献给杭电五十周年校庆的礼物 【几何模板】

献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7597    Accepted Submission(s): 4145 Problem Description 或许你曾经牢骚满腹 或许你依然心怀忧伤 或许你近在咫尺 或许你我天各一方 对于每一个学子 母校 永远航行在 生命的海洋 今年是我们杭电建校五十周年,

献给杭电五十周年校庆的礼物

献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7897 Accepted Submission(s): 4325 Problem Description 或许你曾经牢骚满腹 或许你依然心怀忧伤 或许你近在咫尺 或许你我天各一方 对于每一个学子 母校 永远航行在 生命的海洋 今年是我们杭电建校五十周年,这是一个值得

HDU ACM 1290 献给杭电五十周年校庆的礼物

解析: 1.n条直线把平面分割成的区域数为: f(n)=f(n-1)+n=n(n+1)/2+1; 2.把空间分割为最多区域数的时候,第n个平面与前(n-1)个平面相交,且无三面共线,因此该平面与前(n-1)个平面有(n-1)条交线.这些交线把第n个平面分割为f(n-1)个区域,于是这个平面将原有空间一分为二,增加了f(n-1)个空间,得递推公式:g(n)=g(n-1)+f(n-1)=(n^3+5n)/6+1. 3.这类问题一般都有一个固定的公式,二维的一般是f(x)=a*x^2+b*x+c,三维

8Q - 献给杭电五十周年校庆的礼物

我不能参赛,就送给学校一个DOOM III球形大蛋糕吧.等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢? Input 输入数据包含多个测试实例,每个实例占一行,每行包含一个整数n(1<=n<=1000),表示切的刀数. Output 对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行. Sample Input 1 2 3 Sample Output 2 4 8 // 详见代码 1 #inc

HDU 4937 (杭电多校 #7 1003题)Lucky Number(瞎搞)

题目地址:HDU 4937 多校的题以后得重视起来...每道题都错好多次...很考察细节.比如这道....WA了无数次.... 这题的思路自己真心想不到...这题是将进制后的数分别是1位,2位,3位和更多位的分开来计算. 当是1位的时候,显然只有3到6,此时只能是-1 当是2位的时候,可以转换成一元一次方程求解 当是3位的时候,可以转换成一元二次方程求解 当是4位的时候,此时最多也只有7000个数,7000^3接近1e12.所以剩下的直接枚举进制数来判断即可. 代码如下: #include <i

HDU 4908 (杭电 BC #3 1002题)BestCoder Sequence(DP)

题目地址:HDU 4908 这个题是从m开始,分别往前DP和往后DP,如果比m大,就比前面+1,反之-1.这样的话,为0的点就可以与m这个数匹配成一个子串,然后左边和右边的相反数的也可以互相匹配成一个子串,然后互相的乘积最后再加上就行了.因为加入最终两边的互相匹配了,那就说明左右两边一定是偶数个,加上m就一定是奇数个,这奇数个的问题就不用担心了. 代码如下: #include <iostream> #include <stdio.h> #include <string.h&g

HDU 4975 (杭电多校 #10 1005题)A simple Gaussian elimination problem.(网络流之最大流)

题目地址:HDU 4975 对这题简直无语...本来以为这题要用什么更先进的方法,结果还是老方法,这么卡时间真的好吗....比赛的时候用了判环的方法,一直TLE..后来换了矩阵DP的方式,加了加剪枝就过了..无语了.. 代码如下: #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cstdio> #include <

HDU 4888 (杭电多校#3)Redraw Beautiful Drawings(网络流之最大流)

题目地址:HDU 4888 自己之所以弱真心是态度的问题,以后不能再偷懒了!!那次这个题一直没补,结果这次又遇到了..还有这次遇到的最小割权闭合问题,也一直没刷,所以这次遇到了也不会,连是最小割都不知道!!(突然想起来前面还有好多题拖到现在也没做...T U T)以后绝不能再拖拉了! 这题的建图是很容易的,主要是判断唯一性不好判断.这里是用的dfs找环来判断是否唯一,因为假如有环的话,说明环 中的数字是可以相互流动而且可以保证解依然正确.. 代码如下: #include <cstdio> #i