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 ...
随机推荐
- win7 VS2008 ffmpeg release 版本崩溃 0x00905a4d 处未处理的异常
这个坑, 我始终不相信编码的问题,但还是花了一上午加各种调试代码.一般加个断点,调试几下就知道是什么问题.在最后找不到解决办法的情况下google了一下,短短几分钟解决了这个问题. 程序都是踩着各种坑 ...
- Windows系统架构
操作系统模型 大多数操作系统中,都会把应用程序和内核代码分离运行在不同的模式下.内核模式访问系统数据和硬件,应用程序运行在没有特权的模式下(用户模式),只能使用有限的API,且不能直接访问硬件.当 ...
- Android——另外一种增删查改的方式(ContentProvider常用)
以下介绍另外一种增删查改的方式 package com.njupt.sqllist; import java.util.ArrayList; import java.util.List; import ...
- 理解git对象
1. 首次提交,提交一个简单的文件 a.txt ,commit 之后的图如下: 如图所示,生成了 3 个对象,一个 commit 对象,一个 tree 对象,一个 blob 对象.图上蓝底是 co ...
- c++内存对齐 转载
转载自http://blog.csdn.net/chengonghao/article/details/51674166 例子举的特别好 很多文章大概都有像这样的结论: 1. 数据项只能存储在地址是数 ...
- 【Java每日一题】20170116
20170113问题解析请点击今日问题下方的"[Java每日一题]20170116"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- Elasticsearch 5.0 磁盘空间节省策略的认识
前言:本文是当时QQ群员讨论磁盘空间如何优化,我搜了下类似的文章,结合官方文档做了一些总结 参考文章1 参考文章2 如果你有疑问,可以联系我参与讨论,或者去原文查看. NOTE: 磁盘空间节省问题,是 ...
- [bzoj4540][Hnoi2016][序列] (莫队算法+单调栈+st表)
Description 给定长度为n的序列:a1,a2,…,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar.若1≤l≤s≤t≤r≤n,则称a ...
- js Checkbox 传递多个值给后台
------前台JS "<input class=\'jTabCheck2\' type=\'checkbox\' partvguid=" + obj + " pr ...
- 抓包分析SIP消息
I. 实验环境 SIP服务器: Yate服务器, IP:port=10.15.3.34:5060 SIP客户端: 移植Sipdroid的Android网络电话软件, IP: 10.15.3.73, A ...