bzoj1531

bzoj1531 [POI2005]Bank notes(单调队列优化多重背包) 单调队列优化多重背包的板子。 我们朴素的多重背包做法是O(m∑c)O(m∑c)O(m\sum c)的 可以用二进制优化成O(m∑logc)O(m∑logc)O(m\sum logc) 更进一步的,我们可以用单调队列优化成O(nm)O(nm)O(nm) 考虑转移方程 f[j]=max{f[j−k∗v[i]]+k∗w[i]|0≤k≤c[i]}f[j]=max{f[j−k∗v[i]]+k∗w[... 阅读详情

1531: [POI2005]Bank notes

Time Limit: 5 Sec  Memory Limit:64 MB
Submit: 481  Solved: 269
[Submit][Status][Discuss]

Description

Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币.

Input

第一行一个数 n, 1 <= n <= 200. 接下来一行 n 个整数b1, b2,..., bn, 1 <= b1 < b2 < ... < b n <= 20 000, 第三行 n 个整数c1, c2,..., cn, 1 <= ci <= 20 000, 表示每种硬币的个数.最后一行一个数k – 表示要凑的面值数量, 1 <= k <= 20 000.

Output

第一行一个数表示最少需要付的硬币数

Sample Input

3
2 3 5
2 2 1
10

Sample Output

3
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=20005;
int f[N],w[N*20],c[N*20],len,n,a[N],t,b,k;
char ch;
inline void orzcy(int &s){
    s=0;ch=getchar();
    while (ch<'0' || ch>'9')ch=getchar();
    while (ch>='0' && ch<='9'){
        s=(s<<3)+(s<<1)+ch-48;
        ch=getchar();
    }
}
int main (){
    orzcy(n);
    for (int i=1;i<=n;++i)orzcy(a[i]);
    for (int i=1;i<=n;++i){
        orzcy(b);t=1;
        while (t*2-1<b){
            c[++len]=t*a[i];
            w[len]=t;
            t<<=1;
        }
        w[++len]=b-(t-1);
        c[len]=w[len]*a[i];
    }
    scanf ("%d",&k);
    memset(f,100,sizeof(f));
    f[0]=0;
    for (int i=1;i<=len;++i)
        for (int j=k;j>=c[i];--j)
            f[j]=min(f[j],f[j-c[i]]+w[i]);
    printf ("%d",f[k]);
    return 0;
}



【BZOJ 1531】 [POI2005]Bank notes 队列优化的多重背包问题~ 阅读详情

相关推荐

无人机散热系统设计:从材料选择到智能调控的全面解析

本文全面解析无人机散热系统设计,从材料选择到智能调控,探讨了导热界面材料、轻量化散热结构和智能调控算法的应用。通过实战案例,展示了如何在极端环境下优化散热性能,提升无人机的工作效率和可靠性。

weixin_42567279的博客 430

BZOJ 1531: [POI2005]Bank notes( 背包 )

多重背包...----------------------------------------------------------------------------#include<bits/stdc++.h> #define rep(i, n) for(int i = 0; i < n; i++)#define clr(x, c) memset(x, c, sizeof...

weixin_30685029的博客 181

NX二次开发(python)-坯料尺寸(一)

一般在产品制造过程中,往往要判断一个模型在出模方向上的最小包容盒尺寸,在NX中可以用坯料尺寸命令实现,当然也有相应的代码实现,这或许可以帮助我们实现一些产品的坯料尺寸批量输出,节省人力。

dasfanfan的博客 818

[POI2005]BAN-Bank Notes

题目描述:   Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,…, bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币.      这一题其实很容易看出是一道背包问题,为什么我NOIP2018没有想到,此题应该属于多重背包问题,我们显然可以,将f[i]定为拼出i元需要的最少钞票数,将v定...

weixin_30602505的博客 254

TransUnet官方代码训练自己数据集(彩色RGB3通道图像的分割)

官方代码:https://github.com/Beckschen/TransUNet 目的:训练5个类别的汽车部件分割任务(测试在另一篇博客中) 实现效果: 1. github下载代码,并解压。 项目里的文件可能跟你下载的不一样,不急后面会讲到! 2. 配置数据集(尽最大努力还原官方数据集的格式)。 通常自己手上的数据集分images和labels文件夹,分别存放着原始图像和对应的mask图像,如下图所示; mask图像中的像素有0,1,2,3,4 分别代表背景,车身,轮子,车灯,窗户,一共五个

qq_37652891的博客 5万+

Wireshark实战解析IEC 61850 GOOSE报文:智能变电站通信调试指南

网络协议分析是理解现代工业通信系统的基础,其核心原理在于对数据包的捕获、解码与解析。在电力自动化领域,IEC 61850标准定义了智能变电站内设备间高效、可靠的通信框架,其中GOOSE(通用面向对象变电站事件)协议因其基于以太网多播和快速重传机制,成为保护跳闸、联锁等关键信号传输的基石,其技术价值在于实现了微秒级延迟的高可靠性通信。掌握GOOSE报文的分析能力,对于现场调试、故障定位及系统验证至关重要。本文聚焦于使用Wireshark这一网络分析工具,深入解析GOOSE报文结构,涵盖从以太网帧头、协议标识到

weixin_34401479的博客 376

一本通1601【例 5】Banknotes

1601:【例 5】Banknotes 时间限制: 1000 ms 内存限制: 524288 KB 【题目描述】 原题来自:POI 2005 Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1,b2,⋯,bn。但是每种硬币有数量限制,现在我们想要凑出面值k,求最少要用多少个硬币。 【输入】 ...

weixin_30909575的博客 787

NVIDIA Jetson AGX Xavier设置风扇转速、工作模式及性能监控

Xavier的风扇在开机之后是默认关闭的,每次重启都需要手动打开风扇,后续可能考虑修改bashrc文件进行自动开启 这个是显示当前风扇的转速,默认应该是0,表示关闭,最大是250 cat /sys/devices/pwm-fan/target_pwm 可以通过修改该文件的值来修改风扇转速 vim /sys/devices/pwm-fan/target_pwm 我一般使用的是100这个值 作者:ryan_ren 链接:https://www.jianshu.com/p/d3c2041f7f7d 来源:简书 著

weixin_43877080的博客 1万+

1531: [POI2005]Bank notes二进制优化(c++)

Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币. Input 第一行一个数 n, 1 <= n <= 200. 接下来一行 n 个整数b1, b2,..., bn, 1 <=...

weixin_30814329的博客 332

用友U8自定义按钮开发:从基础配置到实战业务集成

本文详细介绍了用友U8自定义按钮开发的完整流程,从基础配置到实战业务集成。通过实际案例演示如何在U8系统中添加和替换功能按钮,包括数据库配置、SQL脚本编写和VB组件开发等关键技术点,帮助企业用户实现业务场景的深度定制。

weixin_29698641的博客 256

Python爬虫实战:全网政府招标信息采集与整合

本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。

2201_76125261的博客 1380

[BZOJ1531] [POI2005]Bank notes

传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1531题目大意有n种面值的硬币,每个各有x[i]个,询问最少用多少枚可达到面值m题解多重背包,直接转化01超时,二进制优化,具体看模板里写的吧var dp:array[0..20000]of longint; y:array[0..200,1..2]of longint; x:array[0

slongle的专栏 627

Labview界面多按钮控件的一种处理方法

当界面中存在多个按钮控件时候,此时如果逐个为每个控件添加事件条件则会显得较为麻烦,此处提供了一种对多控件进行批量处理的方法

miracleis的博客 2704

BZOJ 1531: [POI2005]Bank notes 多重背包

1531: [POI2005]Bank notes Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 506  Solved: 279 [Submit][Status][Discuss] Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,.

BlackJack 826

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

●BZOJ 1531 [POI2005]Bank notes

题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1531 题解: 单调队列优化多重背包DP (弱弱的我今天总算是把这个坑给填了。。。) 令V[i]为第i种硬币的面值,C[i]为第i种硬币的数目。 定义DP[i][j]表示用了前i种硬币,凑出面值为j的最小硬币数。 先看看这个题用最裸的背包是如何转移的: DP[i][j]=min...

weixin_38169562的博客 153

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

BZOJ 1531 POI2005 Bank notes

多重背包问题,二进制拆分后做~ #include <cstdio> #include <algorithm> #include <cstring> #define up(a,b,c) for(register int c=a;c<=b;++c) #define down(a,b,c) for(register int c=a;c>...

weixin_30338497的博客 140

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

BZOJ 1531 POI2005 Bank notes

1531: [POI2005]Bank notes Time Limit:5 SecMemory Limit:64 MBSubmit:669Solved:366[Submit][Status][Discuss] Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b...

205

BZOJ1531/POI2005 Bank notes

裸的多重背包,利用二进制进行优化: 假设有12枚面额为3的硬币,可以把它转化为 面值为3,6,12,15的硬币分别1枚.这样就把物品总数减少到log件.#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int M=205; const int S=15; const

LIN452 813

bzoj 1531: [POI2005]Bank notes

DescriptionByteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,…, bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币.Input第一行一个数 n, 1 <= n <= 200. 接下来一行 n 个整数b1, b2,…, bn, 1 <= b1 < b2 < … < b n <= 20 0

ypxrain的博客 339

bzoj1531: [POI2005]Bank notes

Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币. Input 第一行一个数 n, 1 <= n <= 200. 接下来一行 n 个整数b1, b2,..., bn, 1 <=...

weixin_30332241的博客 90

BZOJ1531: [POI2005]Bank notes

Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币. Input 第一行一个数 n, 1 <= n <= 200. 接下来一行 n 个整数b1, b2,..., bn, 1 ...

253

BZOJ 1531 POI2005 Bank notes 多重背包

题目大意:多重背包 一大早就水了个题233 #include #include #include #include #define M 20200 using namespace std; int n,k,b[220],c[220]; int f[M]; int main() { int i,j,k; cin>>n; for(i=1;i<=n;i++) scanf("%d",

世界 1710

bzoj1531[POI2005]Bank notes 多重背包

多重背包的裸题.复习一波。。 二进制拆分#include<cstdio> #include<algorithm> #include<cstring> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) using namespace std; const int N=2e4+5; int n

老臣 390

未完成 BZOJ 1531

#include <bits/stdc++.h>#define N 50000int read() { int k=1,x=0; char ch; ch=getchar(); while(ch<'0' || ch>'9') { if(ch=='-') k=-1; ch=getchar();

ypxrain的博客 441

【bzoj1531】[POI2005]Bank notes 多重背包dp

算法:单调队列/二进制 优化多重背包 难度:NOIP 首先,他是一个裸的多重背包,所以我们来贴一个暴力代码吧,时间复杂度O(n*v*val) 代码如下: #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;cstdlib&gt; #include &lt;cmath...

01232012的博客 328
上一篇: 【bzoj3522】 [Poi2014]Hotel
下一篇: bzoj2795
Timothy023
博客等级 码龄9年 4粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值