题目大意:给定 N 个数,求在这 N 个数中至少选出几个数能表示出所有数字,输出最少的个数。

题解:由于只有小的数字可以表示大的数字,因此首先需要对这 N 个数字进行从小到大排序。排序之后就变成一道不定个数的数字组合问题,即:完全背包思想。遍历每一个数字,若该数字不能由之前的数字表示出来,则将答案加一,并将这个数字能够表示的数字进行记录即可。

代码如下

#include <bits/stdc++.h>
using namespace std;
const int maxn=110;
const int maxv=25010; int n,ans,a[maxn];
bool f[maxv]; void read_and_parse(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+n+1);
} void solve(){
for(int i=1;i<=n;i++)if(!f[a[i]]){
++ans,f[a[i]]=1;
for(int j=a[i];j<=a[n];j++)f[j]|=f[j-a[i]];
}
printf("%d\n",ans);
} int main(){
int T;scanf("%d",&T);
while(T--){
memset(f,0,sizeof(f));
memset(a,0,sizeof(a));
ans=0;
read_and_parse();
solve();
}
return 0;
}

【洛谷P5020】货币系统 完全背包的更多相关文章

  1. 洛谷 P5020 货币系统

    题目描述 在网友的国度中共有$ n $种不同面额的货币,第 i种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为\(n\).面额数组为 \(a[1..n]\ ...

  2. NOIp2018 TG day1 T2暨洛谷P5020 货币系统:题解

    题目链接:https://www.luogu.org/problemnew/show/P5020 这道题感觉比较水啊,身为普及组蒟蒻都不费力的做出来了,而且数据范围应该还能大一些,n起码几万几十万都不 ...

  3. 洛谷P5020 货币系统 题解 模拟

    题目链接:https://www.luogu.org/problem/P5020 这道题目是一道模拟题,但是又有一点多重背包的思想在里面. 首先我们定义一个 vis[i] 来表示和为 i 的情况在之前 ...

  4. noip2018 洛谷 P5020 货币系统

    关键: 要使m最小,(m,b)中的数不能用(n,a)中的数表示出来 对于 3  19  10  6 19=10+3+3+3 6=3+3 只有3 和 10 不能被(n,a)中的数表示 所以m=2 只需要 ...

  5. 洛谷P5020 货币系统

    题目 题意简化一下就是找题目给定的n个数最多能消掉多少个,我们用个tong[i]来记录i这个数值能不能用小于等于i的货币组合起来,等于1意味着他只能由自己本身的货币组成,等于2说明他可以被其他货币组成 ...

  6. 洛谷 p5020 货币系统 题解

    传送门 一个手动枚举能过一半点而且基本靠数学的题目(然而我考试的时候只有25分) 读清题目后发现就是凑数嘛,.... 对啊,就是凑数,怎么凑是重点啊.. 于是就绝望了一小时手动枚举n从1到5的情况 吐 ...

  7. 洛谷P5020货币系统

    题目 这个题打眼看上去可能是一个数论或者DP,其实我们可以简化一下题意,即 给定一个集合\(\alpha\),找到几个数使得这几个数可以拼凑起来这个集合里所有的数,且需要使这些数的个数最小. 这样这个 ...

  8. 洛谷 P1474 货币系统 Money Systems(经典)【完全背包】+【恰好装满的最大方案数量】

    题目链接:https://www.luogu.org/problemnew/show/P1474 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对 ...

  9. 洛谷P1474 货币系统 Money Systems

    P1474 货币系统 Money Systems 250通过 553提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 母牛们不但创 ...

  10. 洛谷 P1474 货币系统 Money Systems

    P1474 货币系统 Money Systems !! 不是noip2018的那道题. 简单的多重背包的变式. #include <iostream> #include <cstdi ...

随机推荐

  1. 值类型和引用类型的区别,struct和class的区别

    C#值类型和引用类型 1.简单比较 值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long,floa ...

  2. Linux mount 命令

    mount 命令用来挂载文件系统.其基本命令格式为:mount -t type [-o options] device dirdevice:指定要挂载的设备,比如磁盘.光驱等.dir:指定把文件系统挂 ...

  3. 行业干货-如何逆向解决QT程序汉化中乱码问题

    前言 “一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码.面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解 ...

  4. 分布式监控系统Zabbix3.4-针对MongoDB性能监控操作笔记

    公司在IDC机房的一台服务器上部署了MongoDB,由于所存储的业务数据比较重要,所以对MongoDB的监控显得尤为重要!Zabbix监控MongoDB性能的原理:通过echo "db.se ...

  5. 先埋锅-CF-Valid BFS?-差一点没交上

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  6. Individual Reading Assignment

    1.What exactly does 'agile' mean? 1)Agile software development does not means a invariable mode of p ...

  7. 同步手绘板——json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  8. QT QProgressBar QProgressDialog 模态,位置设置,无边框,进度条样式

    一  关于模态设置 QProgressDialog可以设置模态(需要在new的时候传入parent),QProgressBar设置不好: 只有dialog可以设置模态,widget不能设置模态(QPr ...

  9. 战神答题APP 无敌结束版

    APP发布了哦~~     多多捧场~ http://anzhuoyuan.com/app/info/appid/242381.html 还有github https://github.com/784 ...

  10. 软件工程(GZSD2015) 第三次作业提交进度

    第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...