zoukankan      html  css  js  c++  java
  • Google code jam 2008, Round 1A: B.Milkshakes 翻译

    英文地址:here
    本文仅作学习之用,题目的测试用例下载及答案的上传请到上面的英文地址,有不专业或者错误还请指正。

    奶昔店

    问题
    你经营一家奶昔店,可以准备N种不同的口味,每一种口味又可以分成添加麦乳精(malted)和不添加麦乳精(unmalted)两种。因此,你一共可以做2N中不同口味的奶昔。
    每一位顾客都有一些自己喜欢的奶昔,并且只要你能提供一种他们喜欢的口味就可以满足他们的要求。每位顾客喜欢的口味里面最多有一种是添加麦乳精的。
    你要制作N桶奶昔,因此:

    • 每一种口味的奶昔都会有且只有一桶,而且它要么是添加麦乳精的要么是不添加的
    • 对每一位顾客,你都应该至少准备一桶他们喜欢的类型。
    • 含麦乳精的桶数尽可能的最少。

     找出有没有可能在这些约束条件下满足所有的顾客,如果满足,你需要制作那些口味的奶昔。

     如果可以满足所有的顾客,那么将会只有一个答案的添加麦乳精的奶昔桶数是最少的。

     输入

    •  包含一个整数C的一行,表示在输入文件里的测试用例数

     对于每一个测试用例,会有:

    • 包含一个整数N的一行,奶昔口味数
    • 包含一个整数M的一行,顾客数
    • M行,每一行对应一个顾客,包含:
      • 一个整数T >= 1,顾客喜欢的奶昔口味数,紧接着是:
      • T个整数对"X Y",一个是表示顾客喜欢的口味,X取值从1到N(包含),另一个Y为0表示不添加麦乳精,为1表示添加麦乳精。注意:
        • 对于每一位顾客没有一个整数对会出现1次以上
        • 每一位顾客至少有一种喜欢的口味(T >= 1)
        • 每一位顾客最多喜欢一种添加麦乳精的奶昔口味。(也就是说对于每一位顾客最多有一个整数对的Y = 1)

          所有的这些数字都用空格分开。

     输出

    •  C行,一行对应输入文件中出现的一个测试用例,每一行包含一个字符串"Case #X: ",X表示第几个测试用例,从1开始,紧跟着是:
      • 字符串"IMPOSSIBLE",表示如果用户的需求不能被满足 或者
      • N个用空格分开的整数,表示从1到N的每一种口味,如果是0表示对应的口味应该不添加麦乳精,如果是1表示应该添加麦乳精。

    限制

    小数据集和

    C = 100

    1 <= N <= 10
    1 <= M <= 100

    大数据集和

     C = 5
    1 <= N <= 2000
    1 <= M <= 2000

     在一个测试用例中所有顾客的全部T值的和不会超过3000

    例子

     输入
    2
    5
    3
    1 1 1
    2 1 0 2 0
    1 5 0
    1
    2
    1 1 0
    1 1 1

     输出
    Case #1: 1 0 0 0 0
    Case #2: IMPOSSIBLE

    在第一个例子中,你必须把#1口味添加美乳精来满足第一位顾客。其他的所有口味必须是不添加麦乳精的。把#2口味不添加麦乳精满足第二位顾客的需求,把#5口味做成不添加麦乳精满足第五位顾客的需求。
    在第二个例子中只有一种口味。一个顾客希望是添加麦乳精的但另一位不希望,所以你不能同时满足他们两个。

  • 相关阅读:
    常用软件自动化测试工具汇总
    推荐一款国产优秀的基于 AI 的 Web 自动化测试工具——kylinTOP 测试与监控平台
    常用性能测试工具
    一款类似loadRunner的优秀国产压力测试工具——kylinTOP测试与监控平台
    性能测试工具基本工作原理及仿真能力比较
    10大主流性能测试工具推荐
    AVL平衡二叉查找树
    图的深度优先和广度优先遍历
    向图中增加结点
    图数据类型的定义
  • 原文地址:https://www.cnblogs.com/gg_shily/p/google_code_jam_1A_B.html
Copyright © 2011-2022 走看看