题目http://poj.org/problem?id=3211

分析:两个人洗衣服,可以同时洗,但是只能同时洗一种颜色。
要时间最短,那么每一种颜色的清洗时间最短。
转换为,两个人洗同一种颜色的衣服,彼此之间的时间差最小。
这里也就是前面做过的01背包问题了。

#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

int N,M;
int num[20],sum[20],dp[100010],w[20][20];
char color[20][20];

int Index(char *str)
{
    for(int i=1;i<=M;i++)
        if(!strcmp(str,color[i])) return i;
}

int ZeroOnePack()
{
    int sumtime=0;
    //第一层循环遍历所有的颜色
    for(int i=1;i<=M;i++)
    {
        memset(dp,0,sizeof(dp));
        //01背包问题
        for(int j=1;j<=num[i];j++)
            for(int k=sum[i]/2;k>=w[i][j];k--)
                dp[k]=max(dp[k],dp[k-w[i][j]]+w[i][j]);
               
    //计算时间总和
        sumtime+=sum[i]-dp[sum[i]/2];
    }
    return sumtime;
}

int main()
{
    char str[20];
    int time;
    while (scanf("%d%d",&M,&N))
    {
    if(N==0&&M==0) break;
        for(int i=1;i<=M;i++)
            scanf("%s",color[i]);

        memset(num,0,sizeof(num));
        memset(sum,0,sizeof(sum));

        for(int i=1;i<=N;i++)
        {
            scanf("%d %s",&time,str);
            //对数据进行预处理,按照颜色分类
            int index=Index(str);
            num[index]++;
            sum[index]+=time;
            w[index][num[index]]=time;
        }

        printf("%d\n",ZeroOnePack());
    }
    return 0;
}


最新文章

  1. 平衡二叉树AVL插入
  2. JS:采摘自JS精粹
  3. 编写shell管理脚本(一)
  4. Ajax解析
  5. windows 删除多层文件夹
  6. Oracle 11g透明网关连接Sqlserver 2000
  7. Java NIO 与 IO
  8. jQuery插件之validation插件
  9. 数据库表反向生成(二) Django ORM inspectdb
  10. HBase Block Cache(块缓存)
  11. HASHSET不能预留容量问题
  12. NumPy-快速处理数据--ndarray对象--数组的创建和存取
  13. Promise的实现原理
  14. 【linux基础】使用命令行编译运行c++程序
  15. ssh安装
  16. UI5-文档-2-开发环境
  17. c++ 预处理和多重替换
  18. 【BZOJ4903/UOJ300】【CTSC2017】吉夫特
  19. spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference &#39;*&#39; is ambiguous)
  20. (1)C#工具箱-公共控件1

热门文章

  1. python_django_models模块
  2. sql(7)
  3. php 三种文件下载的实现
  4. Perl 数据类型
  5. H5 小代码(实时更新)
  6. Laravel5.4中自定义404等错误页面
  7. PyCharm中批量查找及替换
  8. 第二十一篇:spring怎么做缓存
  9. shell脚本,循环的记录
  10. MediatR 知多少 - 简书