zstu 4214 高楼扔鸡蛋(google 面试题)dp
input
T 1<=T<=10000
n m 1<=n<=2000000007 1<=m<=32
output
m个鸡蛋从1到n哪一楼x扔下去刚好没碎,而再x+1楼扔下去就碎了,求最少扔的次数无论x为1到n的哪个数都能确定x
如果x>32,输出Impossible,否则输出x
做法:dp,d(x,y)=d(x,y-1)+d(x-1,y-1),x:egg,y:floor求出下限,即x个鸡蛋至少要试多少次
# include <stdio.h>
# include <limits.h>
#define INF 2000000010
int max(int a, int b) { return (a > b)? a: b; }
int eggFloor[][];
int eggDrop(int n, int k)
{
/* eggFloor[i][j] 表示对于 i个鸡蛋 j 层楼,需要的最少测试次数 */
int res;
int i, j, x;
// 初始化
for (i = ; i <= n; i++)
{
eggFloor[i][] = ;
eggFloor[i][] = ;
} //只有一个鸡蛋,没得优化,需要j次
for (j = ; j <= k; j++)
eggFloor[][j] = j; // 最优子结构的递推
for (i = ; i <= n; i++)
{
for (j = ; j <= k; j++)
{
eggFloor[i][j] = INT_MAX;
for (x = ; x <= j; x++)
{
res = + max(eggFloor[i-][x-], eggFloor[i][j-x]);
if (res < eggFloor[i][j])
eggFloor[i][j] = res;
}
}
}
}
int a[][][];
int init()
{
for(int i=;i<=;i++) { a[][i][]=a[][i][]=;a[][i][]=a[][i][]=; }
for(int j=;j<=;j++) a[][][j]=a[][][j]=j;
for(int i=;i<=;i++)//egg
{
for(int j=;j<=;j++)//floor
{
a[][i][j]=a[][i][j-]+;
a[][i][j]=a[][i][j]+a[][i-][j-];
if(a[][i][j]<) a[][i][j]=INF;
if(a[][i][j]<) a[][i][j]=INF;
}
}
for(int i=;i<=;i++,printf("\n"))
for(int j=;j<=;j++)
printf("%2d,%2d ",a[][i][j],a[][i][j]);
}
int b[][];
int init1()
{
for(int i=;i<=;i++) { b[i][]=;b[i][]=; }
for(int j=;j<=;j++) b[][j]=j;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
b[i][j]=+b[i][j-]+b[i-][j-];
if(b[i][j]<) b[i][j]=INF;
}
}
/* for(int i=1;i<=33;i++,printf("\n"))
for(int j=1;j<=33;j++)
printf("%d ",b[i][j]);*/
}
/* 测试*/
int main()
{
// freopen("out","w",stdout);
// init();
init1();
int n,k,i,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(i=;i<=;i++) if(n<=b[k][i]) break;
i<=?printf("%d\n",i):puts("Impossible");
}
return ;
eggDrop(n,k);
for(int i=;i<=n;i++)//egg
{
for(int j=;j<=k;j++) printf("%2d ",eggFloor[i][j]);
printf("\n");
}
return ;
}
zstu 4214 高楼扔鸡蛋(google 面试题)dp的更多相关文章
- Google面试题-高楼扔鸡蛋问题
本文由 @lonelyrains 出品.转载请注明出处. 文章链接: http://blog.csdn.net/lonelyrains/article/details/46428569 高楼扔鸡蛋问 ...
- 高楼扔鸡蛋问题(鹰蛋问题) POJ-3783
这是一道经典的DP模板题. https://vjudge.net/problem/POJ-3783#author=Herlo 一开始也是不知道咋写,尝试找了很多博客,感觉有点领悟之后写下自己的理解. ...
- Google 面试题和详解
Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道.这个话题已经探讨过很多次,而科技博客 BusinessInsider这两天先是贴出15道Google面试题并一一给出了答案,其中不 ...
- Google面试题之100层仍两个棋子
一道Google面试题,题目如下:"有一个100层高的大厦,你手中有两个相同的玻璃围棋子.从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层 ...
- 数组中第K小的数字(Google面试题)
http://ac.jobdu.com/problem.php?pid=1534 题目1534:数组中第K小的数字 时间限制:2 秒 内存限制:128 兆 特殊判题:否 提交:1120 解决:208 ...
- Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
Google面试题 股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值). SOLUTION 1: 1.维持两个h ...
- [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 ...
- Google面试题:计算从1到n的正数中1出现的次数
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 找工作,准备看写题目,题目说是Goo ...
- Careercup - Google面试题 - 5732809947742208
2014-05-03 22:10 题目链接 原题: Given a dictionary, and a list of letters ( or consider as a string), find ...
随机推荐
- Hadoop1.0.4伪分布式安装
前言: 目前,学习hadoop的目的是想配合其它两个开源软件Hbase(一种NoSQL数据库)和Nutch(开源版的搜索引擎)来搭建一个知识问答系统,Nutch从指定网站爬取数据存储在Hbase数据库 ...
- DataOutputStream的writeBytes(String s)
最近,在关于网络请求中有用到DataOutputStraem中的writeBytes()方法,然而就是这个问题,导致了传输中文时就出现问题,着实困扰了很长一段时间. 后来,服务器端同事建议我使用Dat ...
- 创建和使用SQL Server SSAS本地多维数据集
Microsoft SQL Server SSAS的本地多维数据集(即Local Cube,也叫脱机多维数据集)和本地挖掘模型(Local Mining Models)允许在客户端机器上脱机执行离线分 ...
- java模式之装饰模式
1. 什么叫装饰模式? 根据业务的需求,需要对一个类的方法进行增强的处理. 2. 为什么需要装饰模式? 拓展性更加的好,当觉得这个装饰不好的时候,可以直接拿下,不需要改变任何的代码. 3. 装饰模式的 ...
- snmpwalk高延时问题分析
问题出现 有两台物理机,一台是192.168.1.15,另一台是192.168.1.43.二者的netsnmp版本相同. 使用snmpwalk去访问两台机器,获取tcp重传数(tcpRetransSe ...
- VS超强调试技巧--忍不住想赞一下
你是否曾遇到一个项目启动都要半分钟? 启动后调试或突然看到有行代码写错了?然后开始了: 处理步骤:停止运行->修改代码->重新启动(10-30秒)->又写错了->又要修改-&g ...
- java加解密
换工作中,把以前学的知识,整理整理.能否得到一份好的薪资且满意的工作,然后赢取白富美,走向人生的巅峰,就靠它了.哈哈. 对称加密:DES, AES DES (数据加密算法) : 明文按64位进行分组, ...
- chrome ipc 网摘
http://my.oschina.net/myspaceNUAA/blog/81632?p=1 http://lihuan623.blog.163.com/blog/static/138595845 ...
- json的细节
之前一直纳闷为什么在js里直接写的json数据可以不用eval()直接解析,而后台传入ajax的json数据需要eval()一下才能解析 原来是我没搞清楚json格式字符串跟json对象 var te ...
- 研究表明,VR社交有助于内向者改变性格
目前,外界对于VR的普遍观点是这种头显提供了一种孤立的.反社会性的体验.但很少有人会意识到,虚拟现实同时也存在着能够增进人与人之间的关系的可能性. Facebook(脸书)IQ是人们连接这一社交网络的 ...