zoukankan      html  css  js  c++  java
  • 补圣衣

    补圣衣

    Description

    有四个人,每人身上的衣服分别有s1,s2,s3和s4处破损,而且每处破损程度不同,破损程度用需修好它用的时间表示(A1...As1,B1...Bs2,C1...Cs3,D1...Ds4)。不过你可以同时修补2处破损。但是这2处破损,只能是同一件衣服上的。就是说你只能同时修补一件衣服,修好了,才能修补下一件。

    Input

    本题包含5行数据:第1行,为s1,s2,s3,s4(1≤s1,s2,s3,s4≤20) 第2行,为A1...As1 共s1个数,表示第一件衣服上每个破损修好它所需的时间 第3行,为B1...Bs2 共s2个数,表示第二件衣服上每个破损修好它所需的时间 第4行,为C1...Cs3 共s3个数,表示第三件衣服上每个破损修好它所需的时间 第5行,为D1...Ds4 共s4个数,表示第四件衣服上每个破损修好它所需的时间 (1≤A1...As1,B1...Bs2,C1...Cs3,D1...Ds4≤60)

    Output

    输出一行,为修好四件衣服所要的最短时间

    Sample Input

    1 2 1 3		
    5
    4 3
    6
    2 4 3
    

    Sample Output

    20
    

    HINT

    Source

    #include <bits/stdc++.h>
    using namespace std;
    int s[5];
    bool f[1300];
    int a[21];
    int main() 
    {
        for(int i = 1;i<=4;i++)
        cin>>s[i];
        int ans=0;
        for(int _i=1;_i<=4;_i++)
        {
            memset(f,0,sizeof(f));
            int sum=0;
            for(int i=1;i<=s[_i];i++)
            {
                scanf("%d",&a[i]);
                sum+=a[i];
            }
            f[0]=1;
            for(int i=1;i<=s[_i];i++)
            {
                for(int j=sum;j>=0;j--)
                {
                    if(f[j]==1)
                    {
                        f[j+a[i]]=1;
                    }
                }
            }
            for(int i=(sum+1)/2;i<=sum;i++)
            if(f[i]==1)
            {
                ans+=i;
                break;
            }
        } 
        cout<<ans<<endl;   
        return 0;
    }
    /**************************************************************
        Problem: 1606
        User: LJA001162
        Language: C++
        Result: 正确
        Time:0 ms
        Memory:1536 kb
    ****************************************************************/
    
  • 相关阅读:
    CF251D
    P6914
    CF1100F
    双连通 / 圆方树 胡扯笔记
    P4082
    SparkSql使用Hive中注册的UDF函数报类找不到问题解决
    Oracle 查询时使用时间作为where报错hour must be between 1 and 12
    【面试-python】
    Linux和Git
    AMBA初探
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11867769.html
Copyright © 2011-2022 走看看