zoukankan      html  css  js  c++  java
  • [Uva10934]Dropping water balloons

    题目大意:你有k个一模一样的水球,在一个n层楼的建筑物上进行测试,你想知道水球最低从几层楼往下丢可以让水球破掉。由于你很懒,所以你想要丢最少次水球来测出水球刚好破掉的最低楼层。

    解题关键:令$dp[i][j]$表示$i$个气球,丢$j$次最多确定的层数

     转移方程:$dp[i][j] = dp[i - 1][j - 1] + 1 + dp[i][j - 1]$

    $dp[i][j]$可以由两方面转化而来,

    一方面,在$i$个气球,丢了$j-1$次时,第$j$次没破

    另一方面,在第$i-1$个气球时,丢了$j-1$次,第$j$次破了,确定层数需要+1

    这道题注意的是思路的转化。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll dp[70][70],k,n;
    void init(){
        for(int i=1;i<=63;i++){
            for(int j=1;j<=63;j++){
                dp[i][j]=dp[i][j-1]+dp[i-1][j-1]+1;
            }
        }
    }
    int main(){
        init();
        while(~scanf("%lld%lld",&k,&n)&&k){
            bool flag=false;
            k=min((int)k,63);
            for(int i=0;i<=63;i++){
                if(dp[k][i]>=n){
                    flag=true;
                    printf("%d
    ",i);
                    break;
                }
            }
            if(!flag) printf("More than 63 trials needed.
    ");
        }
        return 0;
    }
  • 相关阅读:
    jquery动态生成html代码绑定事件
    jQuery中如何给动态添加的元素绑定事件
    JAVA基础面试(一)
    JAVA基础面试(二)
    JAVA面试之集合框架(三)
    JAVA基础面试(四4)
    JAVA基础面试(五5)
    JAVA基础面试(五)
    JavaWeb面试(六)
    JavaWeb面试(七)
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7810536.html
Copyright © 2011-2022 走看看