精华内容
下载资源
问答
  • “如果我在用红牛装满他们的水杯后,把天花扔进一个装满短跑运动员的房间呢?” - 与LD_PRELOAD一起使用的轻量级库,它将在不同的时间间隔内有意中断某些 libc 调用。 专门设计用于导致网络功能和内存分配中的随机...
  • 一个3毫升的空杯子,一个5毫升的空杯子,和一个8毫升装满水的杯子。 不可以使用其他容器,使5毫升和8毫升的杯子各装4毫升水 人工解决 3毫升 5毫升 8毫升 0 0 8 8→5 ### 0 5 3 5→3 ### 3 2 3 3→8...

    问题

    一个3毫升的空杯子,一个5毫升的空杯子,和一个8毫升装满水的杯子。
    不可以使用其他容器,使5毫升和8毫升的杯子各装4毫升水

    人工解决

    3毫升 5毫升 8毫升
    0 0 8
    8→5 ### 0 5 3

    5→3 ### 3 2 3

    3→8 ### 0 2 6

    5→3 ### 2 0 6

    8→5 ### 2 5 1

    5→3 ### 3 4 1

    3→8 ### 0 4 4

    在手工计算出之后

    我大约用了15分钟从思考思路到编写代码,思考8分钟左右

    想挑战的不要直接看代码,自己想一下

    看看其他大神有没有新颖的解题思路请留言供大家观摩

    code

    # 问题:一个3毫升的空杯子,一个5毫升的空杯子,和一个8毫升装满水的杯子
    # 不可以使用其他容器,使5毫升和8毫升的杯子各装4毫升水
    import random
    
    a = 0
    b = 0
    c = 8
    while b != 4 or c != 4:
        d = random.randint(0, 5)
        if d == 0:
            if a > 0:
                if b < 3:
                    b += a
                    a = 0
        elif d == 1:
            if a > 0:
                if c < 6:
                    c += a
                    a = 0
        elif d == 2:
            if b > 0:
                if b > 3 - a:
                    b -= 3-a
                    a = 3
                else:
                    a += b
                    b = 0
        elif d == 3:
            if b > 0:
                if c < 8:
                    if b+c < 9:
                        c += b
                        b = 0
                    else:
                        b = b+c-8
                        c = 8
        elif d == 4:
            if c > 0:
                if a < 3:
                    if c > 3-a:
                        c -= 3-a
                        a = 3
                    else:
                        a += c
                        c = 0
        elif d == 5:
            if c > 0:
                if b < 5:
                    if c > 5-b:
                        c -= 5-b
                        b = 5
                    else:
                        b += c
                        c = 0
        print('a==', a, 'b==', b, 'c==', c, 'd==', d)
    print('终于成功了 a==', a, 'b==', b, 'c==', c)
    
    TravellerHui      
    
    转发评论收藏加关注呦
    转发评论收藏加关注呦
    
    展开全文
  • UVa10934 装满水的气球

    千次阅读 2018-08-02 21:34:14
    解析:设还剩i气球,j次机会时能够测得的最大高度为d[i][j](换句话说,就是d[i][j]层内,可以用i气球j次机会测出气球硬度为j),可以知道: 如果此层气球炸了,那么就意味着d[i][j] - 1 层必须用i-1气球,...

    原题链接:UVa10934

    解析:设还剩i个气球,j次机会时能够测得的最大高度为d[i][j](换句话说,就是d[i][j]层内,可以用i个气球j次机会测出气球硬度为j),可以知道:

    • 如果此层气球炸了,那么就意味着d[i][j] - 1 层必须用i-1个气球,测试j-1次测出来,于是d[i][j] = d[i-1][j-1] + 1。
    • 如果此层没有破裂,那么说明还有i个气球,j-1次机会来在d[i][j]的基础上测最高层数,因此d[i][j] = d[i-1][j-1]+1+d[i][j-1]

    代码实例:

    #include<iostream>
    #include<cstring>
    using namespace std;
    
    const int maxk = 100;
    const int maxa = 63;
    
    unsigned long long d[maxk+1][maxa+1];
    
    int main() {
      memset(d, 0, sizeof(d));
      for(int i = 1; i <= maxk; i++)
        for(int j = 1; j <= maxa; j++)
          d[i][j] = d[i-1][j-1] + 1 + d[i][j-1];
    
      int k;
      unsigned long long n;
      while(cin >> k >> n && k) {
        int ans = -1;
        for(int i = 1; i <= maxa; i++)
          if(d[k][i] >= n) { ans = i; break; }
        if(ans < 0) cout << "More than " << maxa << " trials needed.\n";
        else cout << ans << "\n";
      }
      return 0;
    }

     

    展开全文
  • uva 10934 装满水的气球

    千次阅读 2015-07-07 15:58:42
    题意和思路见: ... 我的想法: 首先问题转化一下 将问题转化成:定义f[i][j] 表示给i水球和j次实验机会,最高能够测试到几层~ ...f[i][j] = f[i][j-1] + f[i-1][j-1] + 1;...后部分是说选在第k层试第次,

    题意和思路见:

    http://blog.csdn.net/shuangde800/article/details/11273123

    我的想法:

    首先问题转化一下

    将问题转化成:定义f[i][j] 表示给i个水球和j次实验机会,最高能够测试到几层~

    则会有如下的转移方程:

    f[i][j] = f[i][j-1] + f[i-1][j-1] + 1;

    后一部分是说选在第k层试第一次,如果摔破了,说明边界在下面的层中。

    所以说选的那个k层,k最大应该满足k <= f[i-1][j-1] + 1; 因为要保证一旦水球在第k层摔坏了,下面的所有层都可以在还有i-1个球和j-1次机会时测出来;

    前一部分表示选在k层试第一次,但是球并没有摔坏。这个时候最高就是在k层的基础上,加上 还有i个球和j-1次机会时能够再往上测几层~即f[i][j-1];

    所以综上两部分,f[i][j]最大就等于f[i-1][j-1] + 1 + f[i][j-1];

    code:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    long long f[110][65];
    
    void init(){
          memset(f, 0, sizeof(f));
          for(int i = 1;  i < 64; i++){
                for(int j = 1; j < 64; j++){
                      f[i][j] = f[i][j-1] + 1 + f[i-1][j-1];
                }
          }
    }
    int main(){
          init();
          int k;
          long long n;
          while(scanf("%d%lld",&k,&n) != EOF){
                if(k == 0) break;
                k = min(k, 63);
                bool ok = false;
                for(int i = 0; i <= 63; i++ ){
                      if(f[k][i] >= n){
                            printf("%d\n",i);
                            ok = true;
                            break;
                      }
                }
                if(!ok) printf("More than 63 trials needed.\n");
          }
          return 0;
    }
    




    展开全文
  • 你有k个一模一样的水球,在一个n层楼的建筑物上进行测试,你想知道水球最低从几层楼往下丢可以让水球破掉。你想丢最少次水球来测出水球刚好破掉的最低楼层。(水球可能在顶楼也不会破)你可以在任意楼层丢下水球来...

    你有k个一模一样的水球,在一个n层楼的建筑物上进行测试,你想知道水球最低从几层楼往下丢可以让水球破掉。你想丢最少次水球来测出水球刚好破掉的最低楼层。(水球可能在顶楼也不会破)你可以在任意楼层丢下水球来测试,如果水球没破,你可以继续用它。
    输入的每一行包含多组测试,每组测试为一行。每组测试包含两个整数 k 和 n, 1 <= k <= 100 ,n 是一个 64 位的整数。
    对于每次测试,输出在最糟情况下,测出水球破掉楼层的最少次数。如果多于63次,就输出“More than 63 trials needed.”
    由于>63次的情况不用考虑,那么要考虑的部分所用的球的个数也不会超过63
    假如用f(i, j)状态来表示用i个气球,丢j次最多能确定的层数。那么有:
    dp[i][j]=dp[i-1][j-1]+dp[i][j-1]+1;

    //Serene
    //紫书p292 装满水的气球 Dropping water balloons  
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int k;
    unsigned long long n,dp[70][70];
    
    int main() {
    	scanf("%d%lld",&k,&n);
    	int ansi,ansj;bool ok;
    	while(k) {
    		memset(dp,0,sizeof(dp));
    		ansi=ansj=64;ok=0;
    		for(int i=1;i<=64&&i<=k;++i){
    		  for(int j=1;j<64;++j) {
    			dp[i][j]=dp[i-1][j-1]+dp[i][j-1]+1;
    			if((i==k||i>=63)&&dp[i][j]>=n) {
    				ansi=i;ansj=j;
    				ok=1;break;
    			}
    		  }
    		  if(ok) break;
    		}
    		if(ansi==64||ansj==64) {
    			printf("More than 63 trials needed.\n");
    		}
    		else printf("%d\n",ansj);
    		scanf("%d%lld",&k,&n);
    	}
    	return 0;
    }


    展开全文
  • 有三个桶,两个大的可装8斤的一个小的可装3斤的,现在有16斤水装满了两大桶就是8斤的桶,小桶空着,如何把这16斤水分给4个人,每人4斤。没有其他任何工具,4人自备容器,分出去的不可再要回来。
  • 常规思路应该是d(i,j),用i气球有j层楼,最少用多少次测出。 但本题的样例是这样的: Sample Input 2 100 10 786599 4 786599 60 1844674407370955161 63 9223372036854775807 0 0 Sample Output 14 21 More ...
  • 开始 rte 是因为用了%I64d而没用%lld。在VJ上做的忘了是UVA上的题 后来 tle 是因为用了 while(scanf("%lld %lld",&k,&n),k+n) 而没用 while(scanf("%lld %lld",&k,&n)&&k)。题目描述与样例输入不符。还记得...
  • 如果该层气球爆炸,则这一层需要消耗一个气球,和一次尝试,所以前面k-1层消耗了i-1个气球和j-1次尝试。2.如果该层气球不爆炸,则这一层不需要消耗气球,但是需要消耗一次尝试,所以j需要减1。 #pra
  • 给 k 个气球 从1 楼 开始往上 扔, n层高的楼, 假设 一个球 扔到 F楼 如果 气球破了, 说明 硬度不超过 f 失去一个球 和 一次实验; 如果没破 失去一次实验, 硬度超过f 层 现在想 给k 个气球 确定最少的 ...
  • 一键关注
  • nyoj21 三水杯 (BFS)

    千次阅读 2016-03-19 10:19:12
    描述 给出三个水杯,大小不一,并且只有最大的水杯的装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标...
  • 有两个容量分别为 x升 和 y升 的水壶以及无限多...从一个水壶向另外一个水壶倒水,直到装满或者倒空 方法一 深度优先遍历 每次操作的选择有 把 X 壶的灌进 Y 壶,直至灌满或倒空; 把 Y 壶的灌进 X 壶,直至灌...
  • 思想:5升水壶去水龙头那边接水,6升水壶不去(保持一个水壶相对静止)。 5升壶 6升壶 5L 0L (5升壶的装满水,6升壶不装水) 0L 5L (5升壶的水全部倒入6升壶中) 5L 5L (5升水壶装满水) 4...
  • 1.将5升的装满倒进7升,7升的壶里还剩2升,将两升倒进5升的桶里,这样5升桶里还有2升; 2.接着再将7升的桶装满,倒进5升的桶里,这样7升的桶里还剩4升,将5升桶里的去掉,再将7升桶里的剩余的4升,倒进5升...
  • 功能度:用水杯装看漏不漏;能不能被喝到 安全性:杯子有没有毒或细菌 抗破坏性:杯子从不同高度落下的损坏程度 可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用 兼容性:杯子是否能够容纳果汁、...
  • 用容积为15升和27升的两个杯子向一个水桶中注水,可以精确向一个水桶中注入多少升水呢? 选项有A.53 B.25 C.33 D.52 设杯子X容量15升,杯子Y容量27升。 若将杯子Y装满水,再倒入X中使X装满水,杯子Y中将剩余...
  • 采用一个3*3的数组a来表示三个人分到的东西。其中每个人对应数组a的一行,数组的第0列放分到的鱼的整筐数,数组的第1列放分到的半筐数,数组的第2列放分到的空筐数。由题目可以推出:  1.数组的每行或...
  • 举例7升杯子3升杯子70434013100171535023找的的规律是先装满容量多的杯子,然后经过几次加减后让容量小的杯子装与最大容量不等的,而且容量小的杯子只要水装满了就要倒掉。比如要构建2升,就要使大容量杯子中的=...
  • 01背包 完全背包是否恰好装满问题 朴素的背包代码是求小于等于背包体积能装的最大值,但有些时候题目要求背包需要完全装满。 恰好装满问题 是否恰好装满的解法不同只在于初始值的不同 恰好装满: 求最大值时,...
  • soj2785_背包装满

    2017-08-15 16:39:42
    2785: Binary Partitions 八百年前的题思想记录
  • 水壶算法实现

    2019-11-30 14:50:35
    三个水壶算法: 三个水壶的容积分别为8升,5升,3升,最开始第一个水壶装满了8升的,每次倒水都只能倒满或者是倒空这两种情况,求出三个水壶中装有4升的最优倒水。 package main import "fmt" /** 三个水壶...
  • 背包正好装满的一些注意点。
  • 有这样一个智力题目:有三个分别是 3 升、5 升和 8 升容积的水桶,其中容积为 8 升的水桶中装满,容积为 3 升和容积为 5 升的水桶是空的,三个水桶都没有体积刻度。现在需要把大水桶中的 8 升等分成两份,每份...
  • 水桶等分水问题

    千次阅读 2016-10-23 17:44:46
    一个容积为8升的水桶里装满,另外还有一个容积为3升的空桶和一个容积为5升的空桶, 如何利用这两个空桶等分8升? 附加条件是三个水桶都没有体积刻度,也不能使用其它辅助容器。 学习王晓华老师...
  • /**********************jibancanyang************************** ... *Created Time : 4/11 11:34:07 2016 *File Name : hdu1114.cpp *题目类型:恰好装满的完全背包 *感悟:已经不适合做这种题了.....
  • NYOJ 三水杯 题解

    2016-06-22 18:52:44
    描述给出三个水杯,大小不一,并且只有最大的水杯的装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,170
精华内容 3,268
关键字:

一个装满水的