• 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
    ",ans);
    45     }
    46     return 0;    
    47 }
    View Code

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

  • 相关阅读:
    CSRF 攻击
    PHP中HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用
    PHP PDO函数库详解
    STK基础
    opnet统计结果的采集模式——capture mode
    一个博客园代码高亮的方案
    博客园TinyMCE编辑器中插入的代码块使用HTML编辑器再编辑
    local statistics和global statistics的区别
    opnet的函数中FIN、FRET和FOUT
    福昕阅读器默认打开pdf文件视图大小
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4310254.html
Copyright © 2020-2023  润新知