zoukankan      html  css  js  c++  java
  • poj 3211 Washing Clothes(背包)

    很不错的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]='';//防止下面的访问越界
    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 ",sum-bb[vv],bb[vv]);
    w=0;sum=0;
    }

    }
    printf("%d ",ans);
    }
    return 0;

    }

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

  • 相关阅读:
    团购网站之大众点评
    cas xml
    smsUtil
    solr配置
    xml
    yu
    Schema.xml
    ApplicationContext-redis.xml
    fast
    第一版
  • 原文地址:https://www.cnblogs.com/riskyer/p/3271311.html
Copyright © 2011-2022 走看看