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;
    }
  • 相关阅读:
    6、加法算术
    5、找出最大和最小的数
    4、计算并输出圆的面积和周长
    2、函数y=f(x)
    1、两数的平方和
    单片机中断寄存器知识点总结
    创建PCB原理图的模板
    电机知识
    结合实例谈谈航拍全景的方法和技巧
    航拍技巧
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7810536.html
Copyright © 2011-2022 走看看