[ POI 2005 ] Bank Notes

\(\\\)

Description



给出 \(N\) 种货币的面值 \(b_i\) 和个数 \(c_i\) ,求最少需要用多少个硬币凑出 \(Q\) 元钱,并输出任意一种方案。

  • \(n\le 200,Q,b_i ,c_i\le 2\times 10^4,\) 空间限制 64 M。

\(\\\)

Solution

\(\\\)

Code


原文地址:https://www.cnblogs.com/SGCollin/p/9898729.html

时间: 2024-08-06 16:48:40

[ POI 2005 ] Bank Notes的相关文章

BZOJ1531: [POI2005]Bank notes

1531: [POI2005]Bank notes Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 229  Solved: 119[Submit][Status] Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币. Input 第一行一个数 n, 1 <= n <

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(x)) using namespace std; const int maxn = 209, maxk =

【BZOJ 1531】 [POI2005]Bank notes

1531: [POI2005]Bank notes Time Limit: 5 Sec Memory Limit: 64 MB Submit: 271 Solved: 139 [Submit][Status][Discuss] Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,-, bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币. Input 第一行一个数 n, 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 <= b1 < b2 < ... < b n <= 20 000, 第三行 n 个整数c1, c2,...,

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

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

BZOJ 1531 POI2005 Bank notes 多重背包

题目大意:多重背包 一大早就水了个题233 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #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++) sc

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>=b;--c) typedef long long ll; ll n,x; ll num[205],value[205],Aim,

BZOJ 1532 POI 2005 Kos-Dicing 最大流+二分

题目大意 给出一些比赛,每场比赛有一个人会胜出,问胜出最多次的人最少胜出多少次. 思路 首先二分答案,转化成判定问题.观察题目,注意到每场比赛只有一个人胜出,那么这可以成为网络流建图流量限制的依据. 具体: S->每个人 f:二分的最大胜出次数. 每个人->他参与的比赛 f:1 每场比赛->T f:1 每次判断最大流和比赛是否相等. CODE #define _CRT_SECURE_NO_WARNINGS #include <queue> #include <cstdi

「POI 2005」SZA-Template 「失配树」「双向链表」「思维」

先来观察答案的几个强性质. 首先答案肯定是原串的一个\(\tt{border}\),也就是失配树上的一条链. 再进一步观察:比如说答案在原串出现的位置分别为\(p_1, p_2, p_3... p_k\)(不妨设其严格升序),那么一定有\(\max (p_i - p_{i-1}) \leq length(ans)\). 你问我为什么?如果大于的话就接不上了啊... 然后我们发现,只要满足上面那两个条件,那这个串一定就是个合法串.于是我们把这套东西搬到失配树上: 这个串是n在树上的祖先 这个串在树