题目链接:https://vjudge.net/problem/27377/origin

题意:

  有一栋n层高的楼,并给你k个水球。在一定高度及以上将水球扔下,水球会摔破;在这个高度以下扔,水球不会摔破,并且可以捡起来再用。现在你要通过不断地试扔水球,找出在这栋楼上的第几层扔水球,恰好能让水球摔破。问你在最坏情况下,最少扔几次可以保证找出这个层数(若大于63次则输出‘More than 63 trials needed.’)。

题解:

  这个问题可以转化成:

    花费i个球,j次扔水球,最多能确定几层(也就是确切地知道在这几层中的任意一层扔水球会不会摔破)。

    也就是dp[i][j] = max floors

    最后统计一下在 i<=k , j<=63 的条件下是否存在dp[i][j] >= n,如果有,则输出符合条件的最小的 j ;如果没有则输出‘More than 63 trials needed.’。

  假设你在第x层扔了一次水球,总共分为两种情况:

  (1)水球破了,那么要找的这个高度一定在 x 及以下。扔这一次花费了1个水球和1个扔的次数,在这之后还可以往下确定dp[i-1][j-1]层。

      dp[i][j] += dp[i-1][j-1]

  (2)水球没破,那么要找的这个高度一定在 x 之上。扔这一次只花费了1个扔的次数,在这之后还可以向上确定dp[i][j-1]层。

      dp[i][j] += dp[i][j-1]

    另外,在 x 层扔的这一次本身也确定了一层。dp[j][j]还要+1

    综上:

      dp[i][j] = dp[i-1][j-1] + dp[i][j-1] + 1

  求dp,两边for循环枚举 i , j 即可。

AC Code:

// dp[i][j] = max num of decided floors
// i: num of burst balloons
// j: throwing times
// we can ammuse that we will use i balloons and throw them j times
// when throwing ith balloon at a certain floor:
// the num of floors we can still confirm:
// 1) burst: dp[i-1][j-1] (downstair)
// 2) intact: dp[i][j-1] (upstair)
// dp[i][j] = dp[i-1][j-1] + dp[i][j-1] + 1
// ans = minimum j with the dp val not less than the height of the house #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_K 105
#define INF 10000000 using namespace std; int k;
int ans;
long long n;
long long dp[MAX_K][MAX_K]; int main()
{
while(cin>>k>>n)
{
if(k==) break;
memset(dp,,sizeof(dp));
ans=INF;
for(int i=;i<=k;i++)
{
for(int j=;j<=;j++)
{
dp[i][j]=dp[i-][j-]+dp[i][j-]+;
if(dp[i][j]>=n) ans=min(ans,j);
}
}
if(ans==INF) cout<<"More than 63 trials needed."<<endl;
else cout<<ans<<endl;
}
}

UVa 10934 Dropping water balloons:dp(递推)的更多相关文章

  1. UVA - 10934 Dropping water balloons (dp,逆向思维)

    题目链接 题目大意:给你n个规格一样的气球和一栋大楼的高度,求最少试验几次能测出气球最高在哪一层掉下来不破. 如果这道题想用(dp[i][j]=用i个气球测出j高度的楼需要几次)来作为状态的话,那你就 ...

  2. uva 10934 Dropping water balloons(转载)

    本文转载自http://blog.csdn.net/shuangde800/article/details/11273123 题意 你有k个一模一样的水球,在一个n层楼的建筑物上进行测试,你想知道水球 ...

  3. UVA - 10934 Dropping water balloons(装满水的气球)(dp)

    题意:有k个气球,n层楼,求出至少需要多少次实验能确定气球的硬度.气球不会被实验所“磨损”. 分析: 1.dp[i][j]表示第i个气球,测试j次所能确定的最高楼层. 2.假设第i-1个气球测试j-1 ...

  4. uva 10934 Dropping water balloons

    你有k个一模一样的水球,在一个n层楼的建筑物上进行测试,你想知道水球最低从几层楼往下丢可以让水球破掉.由于你很懒,所以你想要丢最少次水球来测出水球刚好破掉的最低楼层.(在最糟情况下,水球在顶楼也不会破 ...

  5. 10934 - Dropping water balloons(DP)

    这道题的思路非常难想. 问你须要的最少实验次数,这是非常难求解的.并且我们知道的条件仅仅有三个.k.n.实验次数 . 所以我们最好还是改变思路,转而求最高所能确定的楼层数 .  那么用d[i][j]表 ...

  6. UVA - 590Always on the run(递推)

    题目:UVA - 590Always on the run(递推) 题目大意:有一个小偷如今在计划着逃跑的路线,可是又想省机票费. 他刚開始在城市1,必须K天都在这N个城市里跑来跑去.最后一天达到城市 ...

  7. hdu2089(数位DP 递推形式)

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. 【Uva 10934】Dropping water balloons

    [Link]: [Description] 等价题意: 某人在1..n内选一个数x; 然后让你去猜; 你可以问他是不是在哪个范围里; 每次会告诉你YES或者NO; 问你在最坏的情况下猜出答案需要猜多少 ...

  9. UVA 10559 Blocks(区间DP&&递推)

    题目大意:给你玩一个一维版的消灭星星,得分是当前消去的区间的长度的平方,求最大得分. 现在分析一下题目 因为得分是长度的平方,不能直接累加,所以在计算得分时需要考虑前一个状态所消去的长度,仅用dp[l ...

随机推荐

  1. Texlive + TexStudio + Language Tool Win7配置

    Texlive的配置很简单,安装的时候跟着向导一步一步安装就可以了. TexStudio也是同样的安装过程,没什么技巧.这里提一下界面颜色的配置.习惯了暗底白字,所以就google了一下相关的配置,大 ...

  2. MySQL(一)--基本语法与常用语句

    将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库(Database,DB). 将姓名.住址.电话号码.邮箱地址.爱好和家庭构成等数据保存到数据库中,就可以随时迅速获取想要的 ...

  3. redis内存消耗详解

    Redis所有的数据都存在内存中,相对于廉价的硬盘,内存资源还是比较昂贵的,因此如何高效利用redis内存变得非常重要. 内存消耗分析 管理内存的原理和方法 内存优化技巧 一.内存消耗 理解redis ...

  4. [故障公告]14:40-15:00博客站点web服务器雪崩似的CPU 100%

    非常抱歉,今天下午14:40-15:00左右,web服务器突然雪崩似的出现CPU 100%问题,造成博客站点无法访问(503).由此给您带来很大的麻烦,请您谅解. 在问题出现之前,博客站点运行着5台w ...

  5. Tomcat Connector的三种运行模式

    详情参考: http://tomcat.apache.org/tomcat-7.0-doc/apr.html http://www.365mini.com/page/tomcat-connector- ...

  6. JQuery中常用的选择器

    属性选择器 1>  [attribute] 概述:匹配包含给定属性的元素. 示例 jQuery 代码:$("div[id]") 描述:查找所有含有 id 属性的 div 元素 ...

  7. smarty模板基本语法

    smarty基本语法: 1.注释:<{* this is a comment *}>,注意左右分隔符的写法,要和自己定义的一致. <{* I am a Smarty comment, ...

  8. Luogu 1402 酒店之王(二分图最大匹配)

    Luogu 1402 酒店之王(二分图最大匹配) Description XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自 ...

  9. 智联招聘 卓聘IM演进过程

    1.  卓聘IM开发背景 智联卓聘是智联旗下高端人才招聘平台,成立快4年了,业务增涨每年以100%速度增涨,业务增涨快在开发和上线速度要求也比较高. 2016年6月提出IM开发需求,7月初上线,开发人 ...

  10. Invert a binary tree 翻转一棵二叉树

    Invert a binary tree 翻转一棵二叉树 假设有如下一棵二叉树: 4  / \   2    7  / \   / \ 1  3 6  9翻转后: 4     /    \    7 ...