码迷,mamicode.com
首页 > 其他好文 > 详细

uva10934 Dropping water balloons

时间:2015-06-29 16:22:45      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:

//好久没做题 一直没状态 然后刷了个水题玩玩

//寒假集训和校赛都做到了类似的题目 然而当时并不会 (其实现在也不会

题意:有k个气球和一个n层高的楼,气球有硬度,在某曾会恰好摔碎,问至少多少次实验可以求出来恰好摔碎的楼层。

解:分两种情况讨论:当前楼层破,当前楼层不破,然后f[i][j]表示i个气球实验j次能测到的最高楼层,于是乎f[i][j]=j[i-1][j-1]+f[i][j-1]+1

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<queue>
 8 #include<vector>
 9 #include<map>
10 #include<stack>
11 #include<string>
12 
13 using namespace std;
14 
15 long long n;
16 int k;
17 long long f[101][101];
18 
19 void solve(){
20     if (f[k][63]<n){
21             printf("More than 63 trials needed.\n");
22             return;
23     }
24     for (int i=0;i<64;i++){
25             if (f[k][i]>=n){
26                     printf("%d\n",i);
27                     break;
28             }
29     }
30 }
31 
32 int main(){
33     memset(f,0,sizeof(f));
34     for (int i=1;i<=100;i++){
35             for (int j=1;j<64;j++){
36                     f[i][j]=f[i-1][j-1]+f[i][j-1]+1;
37             }
38     }
39     while (scanf("%d%lld",&k,&n)==2){
40             if (k==0) return 0;
41             solve();
42     }
43     return 0;
44 }
45 /*
46 2 100
47 10 786599
48 4 786599
49 60 1844674407370955161
50 63 9223372036854775807
51 0 0
52 */
View Code

 

uva10934 Dropping water balloons

标签:

原文地址:http://www.cnblogs.com/baby-mouse/p/4607491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!