`
Simone_chou
  • 浏览: 192668 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Washing Clothes(01背包)

 
阅读更多
Washing Clothes
Time Limit: 1000MS   Memory Limit: 131072K
Total Submissions: 8268   Accepted: 2565

Description

Dearboy was so busy recently that now he has piles of clothes to wash. Luckily, he has a beautiful and hard-working girlfriend to help him. The clothes are in varieties of colors but each piece of them can be seen as of only one color. In order to prevent the clothes from getting dyed in mixed colors, Dearboy and his girlfriend have to finish washing all clothes of one color before going on to those of another color.

From experience Dearboy knows how long each piece of clothes takes one person to wash. Each piece will be washed by either Dearboy or his girlfriend but not both of them. The couple can wash two pieces simultaneously. What is the shortest possible time they need to finish the job?

Input

The input contains several test cases. Each test case begins with a line of two positive integers M and N (M < 10, N < 100), which are the numbers of colors and of clothes. The next line contains M strings which are not longer than 10 characters and do not contain spaces, which the names of the colors. Then follow N lines describing the clothes. Each of these lines contains the time to wash some piece of the clothes (less than 1,000) and its color. Two zeroes follow the last test case.

Output

For each test case output on a separate line the time the couple needs for washing.

Sample Input

3 4
red blue yellow
2 red
3 blue
4 blue
6 red
0 0

Sample Output

10

 

    题意:

    两人一起洗衣服,每次洗只能洗相同的颜色,求最短洗完衣服的时间。

 

    思路:

    01背包。两人同样一起洗衣服,所以对于一种颜色的衣服最好能平均分配时间,不能平均则两人时间最接近且最接近平均总时间。

 

    AC:

 

#include<stdio.h>
#include<string.h>
typedef struct
{
    char color[15];  //存颜色的名字
    int sumtime;     //存总时间
    int sumnum;      //存总件数
    int each[105];   //存每一件的时间
}node;
node no[15];
int dp[100000];

int main()
{
    int n,m,ans;
    while(scanf("%d%d",&n,&m)!=EOF&&(n+m))
    {
      ans=0;
      memset(no,0,sizeof(no));
      for(int i=1;i<=n;i++)
      {
        scanf("%s",no[i].color);
        no[i].sumnum=0;
        no[i].sumtime=0;
      }
//颜色种类
      for(int i=1;i<=m;i++)
      {
        int t;
        char str[15];
        scanf("%d%s",&t,str);
        for(int j=1;j<=n;j++)
          if(!strcmp(str,no[j].color))
          {
           no[j].sumnum++;
           no[j].each[no[j].sumnum]=t;
           no[j].sumtime+=t;
          }
      }
//输入每件衣服资料
      for(int k=1;k<=n;k++)
      {
       memset(dp,0,sizeof(dp));
       int half=no[k].sumtime/2;
       for(int i=1;i<=no[k].sumnum;i++)
         for(int j=half;j>=no[k].each[i];j--)
           if(dp[j]<dp[j-no[k].each[i]]+no[k].each[i])
           dp[j]=dp[j-no[k].each[i]]+no[k].each[i];
       ans+=(no[k].sumtime-dp[half]);
      }
//01背包
      printf("%d\n",ans);
    }
    return 0;
}

 

 

 

 

 

分享到:
评论

相关推荐

    POJ3211--Washing Clothes

    【标题】"POJ3211--Washing Clothes" 是一个编程竞赛题目,来源于著名的在线编程平台POJ(Programming Online Judge)。这类题目通常要求参赛者编写程序来解决特定问题,以此锻炼和测试他们的编程技能和算法理解能力...

    C++动态规划算法求解Bridging signals,Human Gene Function,Washing Clothes问题详解

    在本文中,我们将深入探讨如何使用C++编程语言和动态规划算法来解决三个特定的问题:Bridging signals、Human Gene Function以及Washing Clothes。动态规划是一种优化技术,它通过将复杂问题分解为更小的子问题来...

    史上最全poj题目分类(159页).pdf

    01背包问题可以描述为:给定一个固定大小的背包和一系列具有重量和价值的物品,确定哪些物品应该放入背包以使得背包中的总价值最大,同时不超过背包的最大承重限制。为解决这一问题,可以定义一个二维数组dp[i][w],...

    Washing Machine Based on VerilogHDL

    ### 基于Verilog HDL的自动洗衣机系统设计 #### 概述 随着电子技术与计算机科学的迅速发展,电子系统的设计也经历了一场革命性的变革。在这个过程中,硬件描述语言(HDL)作为一种新兴的电子系统开发工具,正在被...

    washingmachine.fis

    washingmachine.fis

    washing_machine_retro

    washing_machine_retro

    精品ppt模板工业形象washing_machine_retro019

    精品ppt模板工业形象washing_machine_retro019

    人教版新起点五年级上册英语Unit6Chores第五课时试题.pdf

    - **She doesn’t like washing clothes.** 肯定句: "She likes washing clothes." 这些是针对人教版新起点五年级上册英语Unit6 Chores第五课时试题的相关知识点,涵盖了词汇学习、短语翻译、句型填空、句子翻译...

    集训全6套练习题-3月9日练习题

    【C算法】相关的知识点主要体现在三个题目中,分别是“Jill’s Bike”、“Fractal”和“Washing Clothes”。 1. Jill’s Bike (POJ1878) 这是一个典型的图论问题,涉及到最短路径的搜索。具体来说,我们需要解决在...

    ccc.rar_washing_洗衣机_洗衣机程序

    标题中的“ccc.rar_washing_洗衣机_洗衣机程序”暗示了这是一个关于洗衣机控制程序的项目,其中可能包含了C语言编写的代码。"ccc.txt"是压缩包内的文件,很可能是源代码文件或者是关于程序的文档说明。 在描述中,...

    Enhance your appliances, e.g. washing machine or dryer, with a v

    Enhance your appliances, e.g. washing machine or dryer, with a virtual representation interacting through mqtt.

    六上第四单元基础知识.docx

    4. Sarah like washing clothes.(改错)- 此句中应该是Sarah likes washing clothes. 用第三人称单数形式likes来匹配主语Sarah。 这些基础知识点是学习英语的重要组成部分,通过掌握这些词汇和句型,学生能够更...

    Washing_Control.zip

    设计要求: (1) 设计一个电子定时器,控制洗衣机做如下运转:定时启动正转25s暂停5s反转25s暂停5s如果定时未到,则回到“正转25s暂停5s……”,定时到则停止。 (2) 若定时到,则停机发出音响信号。...

    imitate-washing-machine.zip_洗衣机

    6. **C语言编程**:文件"imitate washing machine.c"表明程序是用C语言编写的。C语言是一种底层、结构化的编程语言,适合编写单片机程序,因为它可以直接访问硬件资源,并提供高效的代码执行。 7. **定时器中断**:...

    2020春三年级英语下册现在进行时解析闽教版三起20200516280

    - “He is washing his clothes.”(他正在洗衣服。) - “You are flying a kite.”(你正在放风筝。) 4. 否定句式的现在进行时则在be动词后加上“not”。例如: - “I am not doing my homework.”(我没在做...

    Abaqus官方流固耦合实例Front-load washing machine实现(包含ace+inp文件)

    本实例聚焦于流固耦合问题,具体是一个"Front-load washing machine"(前装载洗衣机)的模拟。在实际应用中,洗衣机在工作时,内部的水流与机器壳体之间会发生复杂的相互作用,这种现象就需要通过流固耦合分析来准确...

    Fuzzy_washingMachine.rar_fuzzy_模糊控制代码_模糊洗衣机_模糊理论matlab_洗衣机源程序

    在本项目中,"Fuzzy_washingMachine.rar" 是一个包含模糊控制洗衣机源程序和相关代码的压缩包,可以帮助我们理解和应用模糊理论在实际设备中的控制策略。 首先,模糊控制的核心是模糊逻辑,它是一种处理不精确或...

    A 3D screensaver written in WPF

    I had to wait in today for a new washing machine to be delivered, so had a few hours to spare. So decided it might be fun to try and create a nice WPF screensaver. This article is the outcome of this....

    WASHING code_单片机洗衣机_洗衣机控制板源码_洗衣机_洗衣机单片机_

    在本项目中,"WASHING code_单片机洗衣机_洗衣机控制板源码_洗衣机_洗衣机单片机_" 提供的是一个基于单片机的洗衣机控制系统的设计与实现。这个控制板源码涵盖了洗衣机的基本功能,如正反转、脱水、紫外消毒以及异常...

    washing-machine.rar_plc 洗衣机_洗衣机

    PLC 洗衣机 设计要求,设计步骤,总结等 在硬件上实现过

Global site tag (gtag.js) - Google Analytics