hello kity
期待您的批阅,由于写解题报告时 不一定考虑的很周到,所以如果您有什么不懂的地方,请您留言,然而一天之内我肯定会看见您信息,再对代码注释详细,让您更好的阅读
分类
最新评论
最新留言
链接
RSS
计数器
223174
功能
HDU 1290 2050 (切蛋糕 折线分平面--二维,三维 的分割区间问题)
spoiler
posted @ 2011年4月19日 00:42
in 规律及递归经典题
, 2393 阅读
题目:
Problem Description
或许你曾经牢骚满腹
或许你依然心怀忧伤 或许你近在咫尺 或许你我天各一方 对于每一个学子 母校 永远航行在 生命的海洋 今年是我们杭电建校五十周年,这是一个值得祝福的日子。我们该送给母校一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。 想象着正式校庆那一天,校长亲自操刀,把这个大蛋糕分给各地赶来祝贺的校友们,大家一定很高兴,呵呵,流口水了吧... 等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢? 做不出这个题目,没有蛋糕吃的! 为-了-母-校-,为-了-蛋-糕-(不是为了DGMM,枫之羽最会浮想联翩...),加-油-! |
Input
输入数据包含多个测试实例,每个实例占一行,每行包含一个整数n(1<=n<=1000),表示切的刀数。
|
Output
对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行。
|
Sample Input
1 2 3 |
Sample Output
2 4 8 |
这种题目有公式可以套的s[n] = (n^3 + 5n)/6 +1
文章最后会给出这一类问题的 模板公式,只需具体问题,待定系数去解就可以了 ,很方便
#include<iostream> #include<cstdio> using namespace std; int main(){ int n; while(~scanf("%d",&n)){ int ans=(n*n*n+5*n)/6+1; printf("%d\n",ans); } return 0; }
2050题目:
折线分割平面Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5605 Accepted Submission(s): 4007
Problem Description
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。
Sample Input
2 1 2
Sample Output
2 7 |
这个题目的公式:s[n] = 2*n^2 - n +1;
代码:
#include<iostream> #include<cstdio> using namespace std; int main(){ int cas,n; scanf("%d",&cas); while(cas--){ scanf("%d",&n); int ans=2*n*n-n+1; printf("%d\n",ans); } return 0; }
总结:
其实这类题目都有模板公式的,只许具体问题,您带入几个解去求出各个系数就可以了!
一般二维的是 a*n^2 +b *n +c
三维的是: a*n^3 + b* n^2 + c*n +d
具体问题带定系数法求出各个系数就OK了,不用想破脑筋找规律。。。。。。