ACdreamoj1110(多重背包)

ACdreamoj1110(多重背包)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

意甲冠军:多个裸露的双肩背包。水的问题。


解决方法:然背包一样,仅仅只是加一个数组,记录着每一个物品用过的次数,多于存储量时就pass不更新。

          另一种方法是将每一个物品用二进制压缩处理。第一个代码比較简单;


代码:

/******************************************************
* author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <string.h>
//freopen ("in.txt" , "r" , stdin);
using namespace std;

#define eps 1e-8
#define zero(_) (abs(_)<=eps)
const double pi=acos(-1.0);
typedef long long LL;
const int Max=100010;
const int INF=1000000007;

int a[103];
int num[103];
int rem[Max];
bool ans[Max];
int n,cap;
int main()
{
    int t;
    //cout<<pow(6,4)-1<<endl;
    scanf("%d",&t);int kk=1;
    while(t--)
    {
        memset(ans,0,sizeof ans);
        scanf("%d%d",&n,&cap);
        for(int i=0; i<n; i++)
            scanf("%d",a+i);
        for(int i=0; i<n; i++)
            scanf("%d",num+i);
        ans[0]=1;
        for(int i=0; i<n; i++)
        {
            memset(rem,0,sizeof rem);
            for(int j=0; j<=cap; j++)
            {
                if(j+a[i]>cap||rem[j]>=num[i])
                    continue;
                if(ans[j])
                {
                    if(ans[j+a[i]])
                    {
                        rem[j+a[i]]=min(rem[j+a[i]],rem[j]+1);
                        continue;
                    }
                    ans[j+a[i]]=1;
                    rem[j+a[i]]=rem[j]+1;
                }
            }
        }
        int out=0;
        for(int i=1; i<=cap; i++)
            if(ans[i])
                out++;
        printf("Case %d: %d\n",kk++,out);
    }
    return 0;
}
/*
4 100000
1 12 456 5678
5 5 5 5
*/

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117094.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BCGControlBar31 GUI Professional Crack

    BCGControlBar31 GUI Professional CrackBCGControlBarProforMFCversionsΩ578867473Version31.3.Released06/15/2021AnewclassCBCGPPropertyManager(seescreenshot)implementsaneasyandefficientwaytocreateyourapplicationproperties(options)fromXMLfile,bindpropertiestoCBCGPPr.

    2022年10月22日
    0
  • 通用权限管理组件

    通用权限管理组件

     
     
    整体数字化建设项目
    QQ群:42706992一起学习
    ASP.NETC#.NET
    通用权限管理组件
    使用说明书
     
     

     
     
     
     
     
     
                      开发单位:技术研发部
                编制日期:2010年10月
     

    2022年6月16日
    23
  • python open函数参数_python中open函数的使用

    python open函数参数_python中open函数的使用一、open()的函数原型open(file,mode=‘r’,buffering=-1,encoding=None,errors=None,newline=None,closefd=True)从官方文档中我们可以看到open函数有很多的参数,我们常用的是file,mode和encoding,对于其它的几个参数,平时不常用,也简单介绍一下。buffering的可取值有0,1,>1三个…

    2022年5月9日
    33
  • SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用「建议收藏」

    SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用「建议收藏」SSM是sping+springMVC+mybatis集成的框架。MVC即modelviewcontroller。model层=entity层。存放我们的实体类,与数据库中的属性值基本保持一致。service层。存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层,mapper层是直接跟数据库…

    2022年7月12日
    23
  • emwin用户设置界面_强制刷新快捷键

    emwin用户设置界面_强制刷新快捷键1、在对话框回调函数中定时重绘按键_cbDialogHome(WM_MESSAGE*pMsg){ Switch(pMsg->MsgId){ CaseWM_INIT_DIALOG: WM_CreateTimer(pMsg->hWin,0,100,0);//创建窗口定时器 CaseWM_PAINT://窗口重绘 CaseWM_NOTIFY_

    2022年10月15日
    0
  • Okio实现过程分析「建议收藏」

    Okio实现过程分析「建议收藏」一.Okio是什么文档介绍地址:https://square.github.io/okio/github地址:https://github.com/square/okioOkio是java.io和java.nio的一个补充库,使访问、存储和处理数据更加容易。包含两部分:ByteStrings和BuffersBysteString:是一个不可变的字节序列,可以看做Sring丢失已久的兄弟。它很容的将字节编码或解码为hex、base64和UTF-8;Buffer:可变的字节序列,像ArrayL

    2022年5月2日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号