很不错的01背包!!!

不过有点疑问!!!(注释)

#include <algorithm>

#include<stdio.h>

#include<string.h>
using namespace std;

#define max(a,b) a>b?a:b

struct node

{


char cl[50];


int a;

}aa[200];

int cmp(node a,node b)

{


return strcmp(a.cl,b.cl)>0;

}

int main()

{


int n,m,i,j,q,w,bb[50000],ans,sum,b[50000];


char str[50];


while(scanf("%d%d",&n,&m),n+m)


{


for(i=0;i<n;i++)


scanf("%s",str);


for(i=0;i<m;i++)


scanf("%d %s",&aa[i].a,aa[i].cl);


sort(aa,aa+m,cmp);


aa[m].cl[0]='0';aa[m].cl[1]='\0';//防止下面的访问越界


w=0;ans=0;sum=0;


for(i=0;i<m;i++)


{


if(strcmp(aa[i].cl,aa[i+1].cl)==0)


{


sum=sum+aa[i].a;


b[w++]=aa[i].a;


}


else


{


b[w++]=aa[i].a;


sum+=aa[i].a;


memset(bb,0,sizeof(bb));


int vv=sum/2;


for(j=0;j<w;j++)


for(q=vv;q>=b[j];q--)


bb[q]=max(bb[q],bb[q-b[j]]+b[j]);


ans+=max(sum-bb[vv],bb[vv]);//我这里写成ans=ans+max(sum-bb[vv],bb[vv]);结果就不对了,郁闷!!!


//
printf("%d %d\n",sum-bb[vv],bb[vv]);


w=0;sum=0;


}

}


printf("%d\n",ans);


}


return 0;

}

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

poj 3211 Washing Clothes(背包)的更多相关文章

  1. POJ 3211 Washing Clothes 背包题解

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

  2. POJ 3211 Washing Clothes(01背包)

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

  3. POJ 3211 Washing Clothes【01背包】

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

  4. POJ 3211 Washing Clothes 0-1背包

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

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

    题目链接:http://poj.org/problem?id=3211 题意:有M件衣服,每种衣服有一种颜色,一共有N种颜色.现在两个人洗衣服,规则是必须把这一种颜色的衣服全部洗完才能去洗下一种颜色的 ...

  6. poj 3211 Washing Clothes

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

  7. POJ 3211 (分组01背包) Washing Clothes

    题意: 小明有一个贤妻良母型的女朋友,他们两个一起洗衣服. 有M种颜色的N件衣服,要求洗完一种颜色的衣服才能洗另外一种颜色. 两人可以同时洗,一件衣服只能被一个人洗. 给出洗每件衣服所用的时间,求两个 ...

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

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

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

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

随机推荐

  1. QT 静态编译后中文可能会出现乱码

    QT 静态编译后中文可能会出现乱码.这是因为处理文字编码的 libqcncodecs 库是以 plugin 形式存放在 QT 静态编译目录/plugs/codecs/libqcncodecs.a 文件 ...

  2. Python 数据处理扩展包: pandas 模块的DataFrame介绍(读写数据库的操作)

    1.读取表中的内容,如下例子: import MySQLdb try: conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root ...

  3. nginx区分手机与电脑浏览器并进入相应站点

    本文要讲的的是如何使用nginx区分pc和手机访问不同的网站,是物理上完全隔离的两套网站(一套移动端.一套pc端),这样带来的好处pc端和移动端 的内容可以不一样,移动版网站不需要包含特别多的内容,只 ...

  4. Net::OpenSSH 使用例子

    [root@dr-mysql01 mojo]# cat a1.pl use Net::OpenSSH; my $host = '121.4xx.xx1.41'; my $user = 'root'; ...

  5. UVa 10330 Power Transmission / 最大流

    最大流 这题有很多起点和终点 在取2个点(0和n+1) 作为唯一的起点和终点 此外每个点也有容量限制 建图时每条边上的容量为这条边和2个端的容量的最小值 然后EK就行 #include <cst ...

  6. 基于visual Studio2013解决算法导论之010快排中应用插入排序

     题目 快排中引用插入排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...

  7. AsyncTask总结(经典,附带源码)

    一.整体工程图 二.MainActivity.java package com.jltxgcy.asynctaskdemo; import android.app.Activity; import a ...

  8. android的四种加载模式

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  9. Java基础07 包

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...

  10. BZOJ 1101: [POI2007]Zap( 莫比乌斯反演 )

    求 answer = ∑ [gcd(x, y) = d] (1 <= x <= a, 1 <= y <= b) . 令a' = a / d, b' = b / d, 化简一下得 ...