• 2015安徽省赛 F.多重部分和问题


    题目描述

    有n种不同大小的数字,每种各个。判断是否可以从这些数字之中选出若干使它们的和恰好为K。

    输入

    首先是一个正整数T(1<=T<=100) 接下来是T组数据 每组数据第一行是一个正整数n(1<=n<=100),表示有n种不同大小的数字 第二行是n个不同大小的正整数ai(1<=ai<=100000) 第三行是n个正整数mi(1<=mi<=100000),表示每种数字有mi个 第四行是一个正整数K(1<=K<=100000)

    输出

    对于每组数据,如果能从这些数字中选出若干使它们的和恰好为K,则输出“Yes”,否则输出“No”,每个输出单独占一行

    样例输入

    2
    3
    3 5 8 3 2 2
    17
    2
    1 2 1 1
    4

    样例输出

    Yes
    No

    dp数组
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    int dp[100001],a[100001],m[100001];
    int n,k,T;
    int dper()
    {
        memset(dp,-1,sizeof(dp));
        dp[0]=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<=k;j++)
            {
                if(dp[j]>=0)
                {
                    dp[j]=m[i];
                }
                else if(j<a[i]||dp[j-a[i]]<=0)
                {
                    dp[j]=-1;
                }
                else
                {
                    dp[j]=dp[j-a[i]]-1;
                }
            }
        }
        if(dp[k]>=0){printf("Yes
    ");}
        else printf("No
    ");
        return 0;
    }
    int main()
    {
        scanf("%d",&T); 
        while(T>=1)
        {
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%d",&a[i]);
            }
            for(int i=0;i<n;i++)
            {
                scanf("%d",&m[i]);
            }
            scanf("%d",&k);
            dper();
            T--;
            n=0;k=0;
            memset(a,0,sizeof(a));
            memset(m,0,sizeof(m));
        }
        return 0;
    }
    /**************************************************************
        Problem: 1210
        User: 2014217052
        Language: C++
        Result: 正确
        Time:128 ms
        Memory:2676 kb
    ****************************************************************/
    View Code
    
    
  • 相关阅读:
    osg::PagedLOD example
    osg::NodeVisitor example
    osg::NodeVisitor
    osg::NodeVisitor osg3.4.0
    Visual studio 正在从以下位置加载符号:Microsoft符号服务器 尝试取消禁用后续符号加载
    osgViewer::Viewer::Windows
    Inventor2018专业版软件安装激活教程
    osg osgUtil::LineSegmentIntersector
    Civil 3D百度云地址
    osg define shape(create box)
  • 原文地址:https://www.cnblogs.com/dzzy/p/4692694.html
Copyright © 2020-2023  润新知