U4699 鸡蛋
U4699 鸡蛋
题目背景
调皮的kkk准备恶搞他的同学兼朋友——你!
题目描述
kkk准备从楼上扔鸡蛋下来砸在lzn身上,让lzn变成“鸡蛋王子”。但是如果鸡蛋没有破裂,辣么就没有什么好玩的了,所以kkk必须知道鸡蛋最少在哪一层楼上扔下来会摔破。
kkk为了实验事先买了K个鸡蛋(这些鸡蛋的硬度一样),并来到了一个N层高楼上。每次kkk可以拿着一个鸡蛋从t楼扔下去,并观察鸡蛋有没有摔破。如果鸡蛋在第t层楼没有摔破,那么在1..t-1层楼都不会摔破,而且不论在1..t层楼摔多少次鸡蛋都不会破。
lzn马上就要过来了,所以你需要帮kkk求出,她最少要做多少次实验。
输入输出格式
输入格式:
有多组数据,每组数据包含两个整数K和N
输出格式:
对于每组数据输出最少实验次数,如果实验63次还不能成功,输出TLE
输入输出样例
2 100
1 100
14
TLE
说明
1<=K<=100
1<=N<2^64
题解:
数据范围太大,二分就拜拜了。
只能用考虑dp or递推。
然后自己软腿就推出来了。
f[i][j]表示i个鸡蛋扔j次恰好是f[i][j]层随
转移f[i][j]=f[i][j-1]+f[i-1][j-1]+1;
解释:
f[i][j]=k表示当有i个鸡蛋时扔j次,若楼层数<=k则可确定唯一楼层!
那代码中f[a][b]=f[a][b-1]+f[a-1][b-1]+1;表示什么?
若从某一层扔鸡蛋没碎,剩下了b-1次抛投机会;
若从该层扔下去碎了,不但少了一个鸡蛋,还少了一次抛投机会。
由于从第i层扔鸡蛋,没碎则鸡蛋硬度>=i,碎了则硬度<i,所以以上两种情况判断的楼层区间不会重叠。
但是别忘了扔鸡蛋的那一层……
所以状态转移方程为f[a][b]=f[a][b-1]+f[a-1][b-1]+1。
AC代码:
#include<iostream>
#include<cstdio>
using namespace std;
long long f[][];
long long k,n;
int main(){
for(int a=;a<=;a++)
for(int b=;b<=;b++)
f[a][b]=f[a][b-]+f[a-][b-]+;
while(cin>>k>>n){
bool flag=;
for(int a=;a<=;a++) if(f[k][a]>=n){
flag=;
printf("%d\n",a);
break;
}
if(!flag) printf("TLE\n");
}
return ;
}
U4699 鸡蛋的更多相关文章
- Java开发中经典的小实例-( 鸡蛋0.1元一个,鸭蛋3元一个,鹅蛋6元一个。求一百元买一百个蛋。)
public class Test24 { public static void main(String[] args) { // 鸡蛋0.1元一个,鸭蛋3元一个,鹅蛋6元一个.求 ...
- [CareerCup] 6.5 Drop Eggs 扔鸡蛋问题
6.5 There is a building of 100 floors. If an egg drops from the Nth floor or above, it will break. I ...
- OpenJudge 7627 鸡蛋的硬度
描述 最近XX公司举办了一个奇怪的比赛:鸡蛋硬度之王争霸赛.参赛者是来自世 界各地的母鸡,比赛的内容是看谁下的蛋最硬,更奇怪的是XX公司并不使用什么精密仪器来测量蛋的硬度,他们采用了一种最老土的办法- ...
- noi 7627 鸡蛋的硬度
题目链接:http://noi.openjudge.cn/ch0206/7627/ 题目讲的二分其实是一个误导, d(i,j),表示当前最优策略时,最坏的情况下: 有 J 个鸡蛋,I 个可以怀疑的楼层 ...
- poj 3783 Balls 动态规划 100层楼投鸡蛋问题
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098409.html 题目链接:poj 3783 Balls 动态规划 100层楼投鸡蛋问题 ...
- COJN 0585 800604鸡蛋的硬度
800604鸡蛋的硬度 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 最近XX公司举办了一个奇怪的比赛:鸡蛋硬度之王争霸赛.参 ...
- 基于visual Studio2013解决面试题之1007鸡蛋和篮子
题目
- 扔鸡蛋问题具体解释(Egg Dropping Puzzle)
经典的动态规划问题,题设是这种: 假设你有2颗鸡蛋,和一栋36层高的楼,如今你想知道在哪一层楼之下,鸡蛋不会被摔碎,应该怎样用最少的測试次数对于不论什么答案楼层都可以使问题得到解决. 假设你从某一层楼 ...
- 扔鸡蛋问题详解(Egg Dropping Puzzle)
http://blog.csdn.net/joylnwang/article/details/6769160 经典的动态规划问题,题设是这样的:如果你有2颗鸡蛋,和一栋36层高的楼,现在你想知道在哪一 ...
随机推荐
- day14-二分法、匿名函数、内置函数以及面向过程编程
目录 二分法 匿名函数 内置函数 面向过程编程 二分法 二分法查找适用于数据量较大时,但是数据需要先排好顺序.主要思想是:(设查找的数组区间为array[low, high]) (1)确定该区间的中间 ...
- 构造From窗体获取数据库数据,去除数据库中无用信息,并赋值给字段,最后画出图
private void cbNum_SelectedIndexChanged(object sender, EventArgs e) { FieldListLug.Clear();//继续清除字段 ...
- 12Microsoft SQL Server 索引
Microsoft SQL Server 索引 8.1创建索引 CREATE INDEX idx_name ON table_name(列名) --创建非聚集索引 use student go cre ...
- console.log格式化及console对象
一.console.log格式化打印 console.log格式化这一用法一般都在个人博客或其他官网上有,当F12查看网页元素时,在控制台(console)那里偶尔会发现一些个性化的输出,感觉很奇特很 ...
- java开发掌握的Linux命令
linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...
- (五)python3 整型int
int() Python 内置函数,用于将一个字符串或数字转换为整型. int(x, base=10)#以十进制转换x为整型(默认) >>>int() # 不传入参数时,得到结果0 ...
- 洛谷 1017 进制转换 (NOIp2000提高组T1)
[题解] 纯模拟题. 我们都知道十进制数化成m进制数可以用短除法,即除m取余.逆序排列.而m进制数化为十进制数,按权展开求和即可. 但在本题中进制的基数R可能为负数,我们知道a%R的符号与R一致,也就 ...
- 洛谷 2055 BZOJ 1433 [ZJOI2009]假期的宿舍
[题解] 既然是一人对应一床,那么显然可以用二分图匹配来做.俩人认识的话,如果其中一个a是在校学生,另一个b不回家,b就可以向a的床连边(a,b当然也可以是同一个人). 然后如果最大匹配数大于等于需要 ...
- js 防止重复提交表单
var addFlag = true; function addQuestion(){ if(!addFlag){ return; } addFlag = false; //执行更新操作 jQuery ...
- [luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)
传送门 由于 Di 只有 3 种情况,那么就很简单了 f[i][j][0] 表示前 i 个,且第 i 个变成 j 的 递增序列最小修改次数 f[i][j][1] 表示前 i 个,且第 i 个变成 j ...