#include<iostream>        //0-1背包问题#include<map>#include<vector>#include<string>using namespace std;int main(){int m,n,p,s[12],dp[200000],sum;        //dp[x]=y表示总时间为x,其中在洗衣服的时间最多为 y    int i,j,k;string color;while(cin>>m>>n&&m&&n)    {        map<string ,int> col;        map<string ,int>::iterator ite;        vector<int> vec[12];for(i=0;i<m;++i)        {            cin>>color;            col.insert(make_pair(color,i));        }        memset(s,0,sizeof(s));        sum=0;for(i=0;i<n;++i)        {            cin>>p>>color;            ite=col.find(color);            vec[ite->second].push_back(p);            s[ite->second]+=p;        }for(i=0;i<m;++i)    //对每种颜色进行DP,容量c为s[i]/2,求出最接近c的值.        {            memset(dp,0,sizeof(dp));            int c=s[i]/2;for(j=0;j<vec[i].size();++j)for(k=c;k>=vec[i][j];--k)                        dp[k]=max(dp[k],dp[k-vec[i][j]]+vec[i][j]);            sum+=s[i]-dp[c];        //s[i]-dp[c] 作为洗该颜色衣服的最短时间        }        cout<<sum<<endl;    }return 0;}//题意:两个人洗衣服,衣服的种类m种颜色,共有n件,每种颜色的衣服要分开洗,两个人只能同时洗同种颜色的衣服,只有等一种颜色的衣服洗完之后才能继续洗下一种。//所以只要分别求每种颜色衣服最大的洗完时间,然后相加即可!//对于每种不同颜色衣服,要尽量将不同衣服的不同浆洗时间均匀的分摊到两人身上,//即对于同颜色的衣服,假设一个人洗共耗时 T,则最短的时间便是其中有一个人的浆洗时间必须尽可能的接近T/2,//假设为t,则 T-t 便是最短的时间。这其实就是一个容量为T/2的背包问题。

转载于:https://www.cnblogs.com/mjc467621163/archive/2011/07/22/2114099.html

poj 3211 Washing Clothes相关推荐

  1. poj 3211 Washing Clothes (01)

    http://poj.org/problem?id=3211 小两口洗衣服,只有一种颜色的衣服洗完才能洗下一种颜色,两人同时洗问需要的最小时间. 这里一种颜色的衣服所需的总时间可以求出,求出每种颜色衣 ...

  2. 【POJ - 3211】Washing Clothes (dp,0-1背包中点问题)

    题干: Dearboy was so busy recently that now he has piles of clothes to wash. Luckily, he has a beautif ...

  3. 简单01背包 POJ3211 Washing Clothes 多种衣服分别dp

    题目连接:http://poj.org/problem?id=3211 大意就是 一个人洗衣服,然后找他媳妇帮忙.有n种颜色的衣服,和m件衣服,每件衣服的颜色和洗出来的时间都会给出来.再洗的时候两个人 ...

  4. I - Washing clothes

    题意: 有n个人会在某时间段来洗衣服,但是只有一台洗衣机,当洗衣机被用时其他人只能手洗,手洗时间为y(题目给定),洗衣机的时间为x,x∈[1,y],问当x分别为[1,y]时,最短的洗衣时间是多少? 题 ...

  5. DP分类题目 转载 《志当存高远》大神的 没有冒犯的意思 只是拿过来学习的

    A.各种背包,就根据背包九讲的内容来做吧! --不会背包的可以边看背包九讲边练习 =========================================================== ...

  6. 暑假N天乐 —— 多重+分组背包及变形

    [HDU-1114 Piggy-Bank] 完全背包裸题 http://acm.hdu.edu.cn/showproblem.php?pid=1114 一道迷路的完全背包跑到了这里来...相当于给定背 ...

  7. The Preliminary Contest for ICPC Asia Nanjing 2019ICPC南京网络赛

    B.super_log (欧拉降幂) •题意 定一个一个运算log*,迭代表达式为 给定一个a,b计算直到迭代结果>=b时,最小的x,输出对m取余后的值 •思路 $log*_{a}(a^{a}) ...

  8. 动态规划 —— 背包问题

    [概述] 背包问题(Knapsack problem)是一种组合优化的NP完全问题. 问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最 ...

  9. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法

    Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...

最新文章

  1. 假如 IDEA 也加入防沉迷功能...
  2. Confluence 6 数据库表-空间(Spaces)
  3. 安装VMwareTools后虚拟机中的鼠标滚轮无法使用解决办法
  4. 服务器升级中不能修改,windows10下更新服务器为何改不了了
  5. 自定义能够for each的类,C#,Java,C++,C++/cli的实现方法
  6. display: flex的兼容性写法
  7. 【学堂在线数据挖掘:理论方法笔记】第九天(4.3)
  8. c语言电子时钟设计报告,电子时钟设计实验报告.doc
  9. hp 官方没有针对 mac 的显示器驱动
  10. 税务Ukey如何进行批量开票
  11. 判断点在多边形内(射线法)
  12. ubuntu14.04安装skype4.3
  13. 转载:保护 Web 服务器的安全
  14. 免备案CDN免费 注册就送1T免费加速流量
  15. php抓取微信图片,PHP使用CURL采集微信图片(公众号)如何绕过防盗链系统?
  16. 一文详解光场深度估计
  17. mc通用计算机,《我的世界》里打造一台计算机有多难?复旦大神花一年终于实现!...
  18. Storyboard 解析
  19. 吞噬星空鸿蒙殿主,论《吞噬星空》是鸿蒙三部曲的最后一部!
  20. 【Bioconductor系列】如何用Bioconductor对基因组注释

热门文章

  1. 大数据面试都问些什么?
  2. linux ubuntu系统安装dotnet / Azcopy
  3. 转载︱案例 基于贪心算法的特征选择
  4. 【分享】终端命令工具 自动生成vue组件文件以及修改router.js 1
  5. 二、Sql Server 基础培训《进度2-关于主键(知识点学习)》
  6. 《搭建Centos7之一》
  7. 《利用Python进行数据分析·第2版》第13章 Python建模库介绍
  8. Parallels中使用加密狗读取文件出现错误
  9. AVD Manager
  10. Erlang编程语言的一些痛点