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

题意:有M件衣服,每种衣服有一种颜色,一共有N种颜色。现在两个人洗衣服,规则是必须把这一种颜色的衣服全部洗完才能去洗下一种颜色的衣服。

问:在两个人可以同时洗衣服的情况下,把衣服全部洗完最少需要多久。

如果说两个人同时洗同一种颜色衣服,那么最少的时间就是洗完该颜色衣服的总时间的一半。

那么我们可以将洗每种衣服分开来看,视作一个01背包,容量是洗该颜色衣服的总时间的一半。

然后最多花多久。那么该颜色的总时间-这个人花的最多时间就是另一个洗这种颜色衣服的时间。

最后求最大的。

代码:

 import java.util.*;

 public class Main{
static HashMap<String,Integer> hs;
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
while( true ){
int N = cin.nextInt();
int M = cin.nextInt(); if( N==0&&M==0 ) break; int c[][] = new int[N+1][M+1]; hs = new HashMap<String,Integer>(); for(int i=1;i<=N;i++){
String s = cin.next();
hs.put(s, i);
} int sum[] = new int[N+1]; int sumn = 0; for(int i=1;i<=M;i++){
int ta = cin.nextInt();
String tb = cin.next();
int x = hs.get(tb);
c[x][++c[x][0]] = ta;
sum[x] += ta;
sumn += ta;
} int dp[][] = new int[N+1][sumn+100];
int ans = 0;
for(int i=1;i<=N;i++){
for(int k=1;k<=c[i][0];k++){
for(int j=sum[i]/2;j>=c[i][k];j--){
if( j>=c[i][k] )
dp[i][j] = Math.max(dp[i][j],dp[i][j-c[i][k]]+c[i][k]);
}
}
ans += dp[i][sum[i]/2];
} System.out.println(Math.max(ans,sumn-ans)); }
}
}

[POJ 3211] Washing Clothes (动态规划)的更多相关文章

  1. POJ 3211 Washing Clothes(01背包)

    POJ 3211 Washing Clothes(01背包) http://poj.org/problem?id=3211 题意: 有m (1~10)种不同颜色的衣服总共n (1~100)件.Dear ...

  2. poj 3211 Washing Clothes(背包)

    很不错的01背包!!! 不过有点疑问!!!(注释) #include <algorithm> #include<stdio.h> #include<string.h> ...

  3. POJ 3211 Washing Clothes 背包题解

    本题是背包问题,可是须要转化成背包的. 由于是两个人洗衣服,那么就是说一个人仅仅须要洗一半就能够了,由于不能两个人同一时候洗一件衣服,所以就成了01背包问题了. 思路: 1 计算洗完同一颜色的衣服须要 ...

  4. POJ 3211 Washing Clothes【01背包】

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

  5. poj 3211 Washing Clothes

    // 题意 :夫妻两洗衣服,衣服有m种颜色,每种颜色又有若干件,每件衣服洗完需要特定的时间,要求每种颜色放在一起洗,洗完才能洗其他衣服.最后问洗完需要的最少时间// 将衣服按颜色分类 然后求出每种颜色 ...

  6. POJ 3211 Washing Clothes 0-1背包

    题目大意: xxx很懒,但他有个漂亮又勤奋的女友 (尼玛能不能不刺激我,刚看到这题的时候发现自己的衣服没洗!!!) 可以帮他洗衣服. 洗衣服的时候要求不同的颜色的衣服不能同时洗.一人洗一件的话,问最短 ...

  7. POJ 3211 Washing Cloths(01背包变形)

    Q: 01背包最后返回什么 dp[v], v 是多少? A: 普通01背包需要遍历, 从大到小. 但此题因为物品的总重量必定大于背包容量, 所以直接返回 dp[V] 即可 update 2014年3月 ...

  8. POJ3211 Washing Clothes[DP 分解 01背包可行性]

    Washing Clothes Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 9707   Accepted: 3114 ...

  9. Washing Clothes(poj 3211)

    大体题意:有n件衣服,m种颜色,某人和他的女炮一起洗衣服,必须一种颜色洗完,才能洗另一种颜色,每件衣服都有时间,那个人洗都一样,问最少用时. poj万恶的C++和G++,害得我CE了三次 /* 背包啊 ...

随机推荐

  1. python中时间日期格式化符号

    python中时间日期格式化符号: import time print(time.strftime('%Y%H%M%S', time.localtime())) 运行结果: 2016092308 %y ...

  2. JAVA利用ODBC读取DBF,可以解决javadbf.jar对DBF部分中文乱码和错行等杂症

    因为需要用ODBC所以需要是windows平台 1.安装VFP for ODBC驱动(系统自带的dBase驱动不行哈) 下载:VFPODBC.msi 安装好后ODBC dsn会多出来一个东东,如下图1 ...

  3. Oracle对索引列同时使用多个聚合函数的性能问题

    Oracle某一数据表tkk715(数据量在一千万左右),对一个索引字段做获取最大值与最小值的聚合函数操作,响应时间较长(超过3秒): 将SQL改写为分别取最大.最小的聚合值,IO和响应时间显著下降到 ...

  4. presto访问 Azure blob storage

    当集群使用Azure Blog Storage时,prestoDB无法获取返回结果,在此记录下 如下,hive里面的两个表,一个使用的是本地的hdfs,一个是使用 azure blob storage ...

  5. hadoop(二):hdfs HA原理及安装

    早期的hadoop版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用.为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux ...

  6. 响应式布局设置--@media only screen and

    @media only screen and  only(限定某种设备) screen 是媒体类型里的一种 and 被称为关键字,其他关键字还包括 not(排除某种设备) /* 常用类型 */类型 解 ...

  7. thinkphp禁止模版标签解析

    场景: 页面中某些样式或者js中含有tp定义的模版标签,如果被tp当成模版标签解析,就会解析异常. tp中提供了<literal></literal>标签用于禁止标签内部的代码 ...

  8. Win7系统安装Centos7.0双系统(二)

    4.6语言选择

  9. Samba配置文件常用参数详解-OK

    Samba的主配置文件叫smb.conf,默认在/etc/samba/目录下. smb.conf含有多个段,每个段由段名开始,直到下个段名.每个段名放在方括号中间.每段的参数的格式是:名称=指.配置文 ...

  10. (一)java的由来

    java的诞生:每一次设计语言的革新都是为了解决先前语言所遇到的不能解决的问题,B语言导致C语言的诞生,C语言演变成C++,java则继承了这两种语言的大部分特性.java最初的推动力是为了找到一种能 ...