首页 > 其他分享 >【题解】洛谷P2725 [USACO3.1]邮票 Stamps

【题解】洛谷P2725 [USACO3.1]邮票 Stamps

时间:2022-11-06 13:34:18浏览次数:55  
标签:邮票 初始化 选出 洛谷 int 题解 恰好 USACO3.1 体积

从n种邮票中选出不超过k张邮票,使选出来的邮票可以表示1~m之间(含)的所有数。

每张邮票在不超过k的前提下,都可以使用无数次,因此可以将问题看成一个完全背包问题。
n种邮票就是n种物品,邮票面值就是体积,价值就是选出邮票的数量。问题转化为在n个物品里选出体积恰好为m且总价值最小的完全背包问题。

最后我们从1~m枚举一遍f[i], f[i]<=k的i都是邮票能表示出来的面值。时间复杂度为O(n * M), n是邮票种数,M是各种面值的邮票的总和。

顺便谈谈体积恰好是j的初始化问题:
朴素的状态转移方程为f[i][j] = max(f[i - 1][j], f[i][j - v] + w)(体积至多为j,所有元素初始化为0)。
体积恰好为j的情况下,f[0][0] (下标从1开始)表示从前0个物品中选,体积恰好为0,所以这个状态是合法的。但是f[0][1~j]都是不合法的,因为不可能一件物品都不选反而能凭空出现j的体积,所以这些状态都是不合法的,根据题目求最大/最小值,可以分别将这些状态初始为-INF/INF。
而体积至多为j的情况下,f[0][0] 和 f[0][1~j] 都是合法的,他们都初始化为0。

在以上基础上,再用滚动数组优化,就有了下面的代码。

 

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 const int M = 2000010;
 6 
 7 int n, k;
 8 int f[M];
 9 
10 int main() {
11     cin >> k >> n;
12     memset(f, 0x3f, sizeof f);
13     f[0] = 0;
14     for(int i = 0; i < n; i++) {
15         int v;
16         cin >> v;
17         for(int j = v; j <= M; j++) {
18             f[j] = min(f[j], f[j - v] + 1);
19         }
20     }
21     int res = 0;
22     for(int i = 1; i <= M; i++) {
23         if(f[i] > k) {
24             cout << res << endl;
25             return 0;
26         }
27         else res++;
28     }
29     return 0;
30 }

 

标签:邮票,初始化,选出,洛谷,int,题解,恰好,USACO3.1,体积
From: https://www.cnblogs.com/xioa-chou/p/16862454.html

相关文章

  • [ARC069F]Flags 题解
    因为一个小错误整整调了一天qwq除去2-SAT部分没学过去学了一下,其它部分都想出来了,四舍五入我自己写了一道Cu,好欸(虽然这Cu好像非常水QAQ)。F-Flags一条数轴上有......
  • P8813(CSP-J2022T1)题解
    题意:算a ^ b,如果结果超出1e9就输出-1,反之输出结果。思路:边算边判加特判。代码:#include<cstdio>#definelllonglong#definemx1e9//边界usingnamespacestd;i......
  • P8814(CSP-J2022T2)题解
    题意:给定一个正整数 k,有k 次询问,每次给定三个正整数 n, e, d,求两个正整数 p, q,使 n = p × q且e × d =(p −1)×(q −1)+1。思路:通过题意可以发......
  • AtCoder Beginner Contest 276 A~G 题解
    今天凌晨CFD题差一句判断AC,晚上ABCG题把插板法和快速幂搞混差点AC。事不过三,再这样一次我直接紫砂。太简单的题就不放翻译和代码了。(事实上这场A-E都是大水题......
  • 个人比赛实况和题解
    CodeforcesCF1740:实况:https://pan.baidu.com/s/1BYjUp2Atvqkpqe3jVogPTQ(提取码:1104);题解:https://www.cnblogs.com/lucius7/p/16861747.html。AtCoderabc275:实况:https://p......
  • 洛谷P8757 [蓝桥杯 2021 省 A2] 完美序列 题解
    思路为使描述方便,先令题目描述中的“完美序列”反转(即序列单调递增且每一个数都是上一个数的倍数)。原“完美序列”与反转后的本质相同。先考虑最大长度。显然,当完美序列......
  • 洛谷P8775 [蓝桥杯 2022 省 A] 青蛙过河 题解 贪心+二分答案
    题目链接​​https://www.luogu.com.cn/problem/P8775​​题目大意小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。河里的石头排成了一条......
  • 洛谷-P8814 题解
    前言蒟蒻感叹!许多大佬的思路真的很复杂,于是为了部分没学过的人写了这篇题解(其实就是为了咕值),值得一看!正文♦算法:式子推导从题中可得\(\begin{cases}n_i=p_i\times......
  • 「题解报告」[POI2008]PER-Permutation
    「题解报告」[POI2008]PER-Permutation点击查看目录目录「题解报告」[POI2008]PER-Permutation思路代码不理解哪里难了,学过扩卢并且推一下式子基本就是两眼切吧。......
  • Luogu P5816[CQOI2010]内部白点题解
    LinkLuoguP5816Description一个平面直角坐标系内有\(n\)个黑点,其余点为白点,将会进行若干次变换,每次变换会把上下左右方向都有黑点的白点变成黑点,直到找不到符合要求......