POJ 3211 Washing Clothes【01背包】

题意:给出n种颜色,m件衣服,再分别给出m件衣服的颜色,和洗所需要的时间,dearboy和他的妹子一起洗衣服,且同种颜色的衣服不能同时洗,也不能两个人同时洗一件衣服,问洗完这m件衣服至少需要的时间

先考虑怎样才能让时间最少的方案,肯定是dearboy和他的妹纸各洗一半的时间,这样消耗的时间最少,

这样可以联想到杭电那一道big event in HDU,平均划分背包容量来做。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include <cmath>
 5 #include<map>
 6 #include<algorithm>
 7 using namespace std;
 8
 9 typedef long long LL;
10 char color[15];
11 int w[105][105],dp[1500000],sum[1005],num[1005];
12 map<string,int> mp;
13
14 int main()
15 {
16     int n,m,i,v,t,k,ans;
17     while(scanf("%d %d",&n,&m)!=EOF&&n&&m)
18     {
19         memset(dp,0,sizeof(dp));
20         for(i=0;i<n;i++) {
21             scanf("%s",color);
22             mp[color]=i;    //用map储存下每一种颜色对应的编号
23         }
24         memset(sum,0,sizeof(sum));
25         memset(num,0,sizeof(num));
26
27         for(i=0;i<m;i++){
28             scanf("%d %s",&t,color);
29             int idx=mp[color];
30             sum[idx]+=t;//每一种颜色一共需要洗的时间,相当于每一种颜色的总的背包容量
31             w[idx][num[idx]++]=t;//每一种颜色的衣服还对应有不同的洗的时间
32         }
33         ans=0;
34         for(k=0;k<n;k++){
35             for(i=0;i<=sum[k];++i) dp[i]=0;//这里清零,用i<=sum[k]或者sum[k]/2都可以,但是用memset(dp,0,sizeof(dp))会超时
36             for(i=0;i<num[k];i++)
37             {
38                 for(v=sum[k]/2;v>=w[k][i];--v){
39                     dp[v]=max(dp[v],dp[v-w[k][i]]+w[k][i]);
40                 }
41             }
42             ans+=sum[k]-dp[sum[k]/2];//将 每一种颜色所需要洗的时间加起来
43         }
44         printf("%d\n",ans);
45     }
46     return 0;
47 }

看的题解---好久之前看的这一题,当时不理解的是样例,为什么出现了yellow,可是没有给出黄色的衣服所需要洗的时间,后来发现这个没有影响,给出了哪些,就算哪些好了

时间: 2024-10-28 14:36:42

POJ 3211 Washing Clothes【01背包】的相关文章

poj 3211 Washing Clothes 0-1背包

题意: 有2个人洗n件衣服,每件衣服有需要洗的时间和颜色,只能相同颜色的衣服两人一起洗,求洗完衣服的最少时间. 分析: 0-1背包判断某个重量是否能达到. 代码: //poj 3211 //sep9 #include <iostream> #include <map> #include <string> using namespace std; const int maxN=128; int m,n; map<string,int> name; int v[

POJ 3211 Washing Clothes(01背包)

http://poj.org/problem?id=3211 题意: 有m (1~10)种不同颜色的衣服总共n (1~100)件,Dearboy和她的girlfriend两个人要一起洗完全部衣服,为了预防色彩混合,他们每次只能同时洗同一种颜色的衣服,给出洗完每件衣服所需的时间time和它的颜色color,求出Dearboy和她的girlfriend最少用多少时间能洗完成全部衣服. 分析: 由于每种颜色的衣服是分开洗的, 所以我们可以把所有衣服按颜色分类, 然后每次看洗一种颜色的衣服最少需要花多少

POJ 3211 Washing Clothes 背包题解

本题是背包问题,但是需要转化成背包的. 因为是两个人洗衣服,那么就是说一个人只需要洗一半就可以了,因为不能两个人同时洗一件衣服,所以就成了01背包问题了. 思路: 1 计算洗完同一颜色的衣服需要的总时间totTime 2 利用动态规划背包法求这些衣服能在那些时间点完成 3 求比(totTime+1)/2大的最小时间点 4 得到洗一种颜色衣服的时间,那么继续求下洗一种颜色衣服的时间 5 最后加起来就是答案了. 这个是算法问题. 剩下来就是考编程功力了,因为给出的数据,需要我们自己把衣服分类,分类之

POJ 3211 Washing Clothes

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

[POJ 3211] Washing Clothes (动态规划)

题目链接:http://poj.org/problem?id=3211 题意:有M件衣服,每种衣服有一种颜色,一共有N种颜色.现在两个人洗衣服,规则是必须把这一种颜色的衣服全部洗完才能去洗下一种颜色的衣服. 问:在两个人可以同时洗衣服的情况下,把衣服全部洗完最少需要多久. 如果说两个人同时洗同一种颜色衣服,那么最少的时间就是洗完该颜色衣服的总时间的一半. 那么我们可以将洗每种衣服分开来看,视作一个01背包,容量是洗该颜色衣服的总时间的一半. 然后最多花多久.那么该颜色的总时间-这个人花的最多时间

POJ 3628 Bookshelf 2 (01背包)

Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7496   Accepted: 3451 Description Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available

POJ 3624 Charm Bracelet(01背包裸题)

Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38909   Accepted: 16862 Description Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible fro

POJ 2184 Cow Exhibition (01背包)

题意:每行给出si和fi,代表牛的两个属性,然后要求选出几头牛,是的则求出总S与总F的和,注意S与F都不能为负数 析:用dp[i]来表示存放s[i]的时最大的f[i],其实就是一个01背包.只是取不取的关系.注意是有负数,所以把数组开大一点,然后s[i]的正负数, 我们取的顺序不同,正数是逆向,负数是正向,要不然可能有重复.还不知道为什么交G++就RE,交C++就能过. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo

poj 2184 - Cow Exhibition (01背包) 解题报告

Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10279   Accepted: 4016 Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cows with Guns by Dana Lyons The cows want to prove to