我那个新的货币系统,就是把原来的货币系统中能被其他数表示的数删掉 那我就算有多少数能被别的数表示,那肯定是要被比它小的表示 于是排个序做完全背包就好了 但是我太zz不会完全背包,然后写了个bitset乱搞还开了250000,T到亲妈都不认识 其实完全背包就是把背包的从后往前更新变成了从前往后更新 #include<cstdio> #include<cstring> #include<algorithm> #include<bitset> using name…
[LG5020][NOIP2018]货币系统 题面 洛谷 题解 考场上第一眼还不会233 可以发现只要可以被其他的货币通过一些奇奇怪怪的方式表示出来的货币就\(ban\)掉即可 就是个完全背包 我是统计的方案数,用\(unsigned\) \(long\) \(long\)防炸\(int\) 就算炸掉了无符号长整型也可能对 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstr…
题目大意 给出一组数,求出其中共有多少数不能被其他数表示 解题思路 法一:可爱的动态规划 这个思路还是比较好想的(也比较好写?) 有依赖关系的背包,思路这道题是差不多的 填满型01背包 (关于代码) 写起来坑还是比较多的,ans,f记得清零,边界记得写就不说了,转移方程那里 f[j] |= f[j - a[i]]; 或符号是一定要加的,举个栗子说明: 以样例为例 a[i] = 3,更新f[3],f[6],f[9],f[12]等等,如果不写或符号,  在a[i]=10更新时会出现 f[12] =…
LG传送门 完全背包板子题 显然就是判断有多少种面值的货币可以被其他面值的货币表示,完全背包搞一搞就好了. 考场代码(一看这两格缩进就知道是考场代码): #include<cstdio> #include<cstring> #include<algorithm> #define R register #define I inline using namespace std; const int S=110,N=25010; I int rd(){ R int f=0;…
可以发现最后的集合一定是给定集合的子集 所以就变成了裸的背包嘛,对于每个数判断它能不能被其它数表示出来,如果可以,就表示这个数是没用的,可以去掉 #include<bits/stdc++.h> #define ui unsigned int #define ll long long #define db double #define ld long double #define ull unsigned long long #define ft first #define sd second…
题目大意:给定 N 个数,求在这 N 个数中至少选出几个数能表示出所有数字,输出最少的个数. 题解:由于只有小的数字可以表示大的数字,因此首先需要对这 N 个数字进行从小到大排序.排序之后就变成一道不定个数的数字组合问题,即:完全背包思想.遍历每一个数字,若该数字不能由之前的数字表示出来,则将答案加一,并将这个数字能够表示的数字进行记录即可. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=110; const…
Code: #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; int arr[1000],f[100000],A[100000],bomb[100000]; void setIO(string a){ freopen((a+".in").c_str(),"r",stdin); freo…
题面 思路 先分析一下,a集合的子集肯定不存在可以用它来表示的数,a集合是不能够表示的. 所以问题简化了成为选出a的一个子集(个数最少),能够表达a集合所有能表达的数. 接下来继续分析 如:1 2 4 1没有两集合内数可以表达,留下 2=1+1 所以2删去 3=2+1 所以1删去,3可以被表达(可当做集合内数) 4=1+3 所以4删去 只剩1了,就输出1. 代码 // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace…
传送门 Description 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 \(n\).面额数组为 \(a[1..n]\) 的货币系统记作 \((n,a)\). 在一个完善的货币系统中,每一个非负整数的金额 \(x\) 都应该可以被表示出,即对每一个非负整数 \(x\),都存在 \(n\) 个非负整数 \(t[i]\) 满足 \(a[i] \times t[i]\) 的和为 \(…
[NOIp2018提高组]货币系统 题目大意: 有\(n(n\le100)\)种不同的货币,每种货币的面额为\([1,25000]\)之间的一个整数.若两种货币系统能够组合出来的数是相同的的,那我们就称这两种货币系统是等价的.给定一个货币系统,求不同面额货币数最少的等价的货币系统. 思路: 将面额从小到大排序,如果一种面额能够被其它面额表示出来,那么这种面额就是多余的.因此只需要跑一个背包即可. 源代码: #include<cstdio> #include<cctype> #inc…