CSUOJ 1284 Cutting Cake(递推)
来源:互联网 发布:澳门网络彩票 编辑:程序博客网 时间:2024/06/15 03:35
1284: Cutting Cake
Description
一个蛋糕切N刀,最多能得到多少块?切的过程中不能改变任意一块蛋糕的位置。
Input
输入数据的第一行包含一个整数T (1 <= T <= 100),表示接下来一共有T组测试数据。
每组测试数据占一行,包含一个整数N (1 <= N <= 100),含义同上。
Output
用一行输出一个整数,表示上述问题的答案。
Sample Input
3234
Sample Output
4815
平面分割空间问题,由二维的分割问题可知,平面分割与线之间的交点有关,即交点决定射线和线段的条数,从而决定新增的区域数。试想在三维中则是否与平面的交线有关呢?当有n-1个平面时,分割的空间数为f(n-1)。要有最多的空间数,则第n个平面需与前n-1个平面相交,且不能有共同的交线。即最多有n-1 条交线。而这n-1条交线把第n个平面最多分割成g(n-1)个区域。(g(n)为(1)中的直线分平面的个数)此平面将原有的空间一分为二,则最多增加g(n-1)个空间。
故:f=f(n-1)+g(n-1) ps:g(n)=n(n+1)/2+1
=f(n-2)+g(n-2)+g(n-1)
……
=f(1)+g(1)+g(2)+……+g(n-1)
=2+(1*2+2*3+3*4+……+(n-1)n)/2+(n-1)
=(1+2^2+3^2+4^2+……+n^2-1-2-3-……-n )/2+n+1
=(n^3+5n)/6+1
代码如下:
#include <cstdio>typedef long long ll;ll f[105] = {0,2,4};int main(){int t,n,i,j,k;for(i = 3;i < 101;i++){f[i] = (i * i * i + 5 * i) / 6 + 1;}while(scanf("%d",&t) != EOF){for(i = 0;i < t;i++){scanf("%d",&n);printf("%lld\n",f[n]);}}return 0;}
0 0
- CSUOJ 1284 Cutting Cake(递推)
- csuoj 1968 递推
- UVA - 10003Cutting Sticks(递推)
- hdu5640King's Cake(递推)
- POJ 2951 Cake Cutting(动态规划)
- Uva 10079 - Pizza Cutting 解题报告(递推)
- Cake Cutting Algorithms-1
- poj 2843 Cutting Cake
- POJ 2951 Cake Cutting
- CSUOJ 1772 漫漫上学路(卡特兰数 || 递推)
- Cake Cutting Algorithms – 2
- Sicily 2376. Cutting The Cake
- Cake Cutting Algorithm -4 : Trimming Algorithm
- CSUOJ
- CSUOJ
- Cake Cutting Algorithms – 3 : Moving Knife Algorithm
- Cake Cutting Algorithms – 5 : Envy Free Division
- Cake Cutting Algorithms – 6 : Fair Convex Partitioning
- RecyclerView
- typedef 和define 的区别
- Socket编程(简易聊天室客户端/服务器编写、CocoaAsyncSocket)
- ios developer tiny share-20160713
- ubuntu 安装nodejs 4.X版本以上
- CSUOJ 1284 Cutting Cake(递推)
- html select
- java图片裁切工具类
- HDU 1004 Let the Balloon Rise
- Gem: whenever定时执行任务(rake脚本的编写)
- leetcode 344 Reverse String
- POJ 2417 Discrete Logging(BSGS算法,gcd(a,p)=1)
- python打印列表中指定元素的所有下标(5种方法)
- android的帧动画和补间动画总结