题目链接:https://www.luogu.org/problem/P5020

这道题目是一道模拟题,但是又有一点多重背包的思想在里面。

首先我们定义一个 vis[i] 来表示和为 i 的情况在之前有没有出现过,

一开始当然所有的 vis[i] (除了 vis[0] )都为 false ,只有 vis[0] 为 true ,

然后对于每一个 i 来说,我们从 a[i] 到 maxa (最大值)去判断 vis[j-a[i]] 是否为 true ,

如果 vis[j-a[i]] 为 true,那么 vis[j] 理应为 true ,所以需要将 vis[j] 置为 true ,

但是在置为 true 之前还需要判断一下 vis[j] 是不是已经为 true 了,

如果 vis[j] 已经为 true 了,那么就是说我这一步置不置为 true 没有必要了,

如果对于所有的 j ,我置不置为 true 都没有必要了,那么我就没有必要要这个 a[i] 了。

当然我们首先得给所有的 a[i] 从小到大排序,因为这里涉及到了一丢丢贪心的思想,那就是:

小的永远比大的重要~

依据这样的思想,实现代码如下:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 110, maxa = 25010;
int T, n, m, a[maxn];
bool vis[maxa];
int main() {
scanf("%d", &T);
while (T --) {
scanf("%d", &n);
memset(vis, 0, sizeof(vis));
for (int i = 0; i < n; i ++) scanf("%d", a+i);
sort(a, a+n);
vis[0] = true;
m = 0;
for (int i = 0; i < n; i ++) {
bool flag = false;
for (int j = a[i]; j < maxa; j ++) {
if (vis[ j - a[i] ]) {
if (!vis[j]) {
flag = true;
vis[j] = true;
}
}
}
if (flag) m ++;
}
printf("%d\n", m);
}
return 0;
}

洛谷P5020 货币系统 题解 模拟的更多相关文章

  1. 洛谷 p5020 货币系统 题解

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

  2. 洛谷 P5020 货币系统

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

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

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

  4. 洛谷P5020 货币系统

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

  5. 洛谷P5020货币系统

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

  6. 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 只需要 ...

  7. 洛谷 P1474 货币系统 Money Systems 题解

    P1474 货币系统 Money Systems 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1 ...

  8. 洛谷P1474 货币系统 Money Systems

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

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

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

随机推荐

  1. 洛谷3128 [USACO15DEC]最大流Max Flow——树上差分

    题目:https://www.luogu.org/problemnew/show/P3128 树上差分.用离线lca,邻接表存好方便. #include<iostream> #includ ...

  2. dns-prefetch对网站速度能提升有多少?详解dns-prefetch。

    DNS解析场景 有很多大型的网站,都会用N 个CDN 域名来做图片.静态文件等资源访问.比如新浪,我们经常会看到有下列域. img1.sina.com.cn . img2.sina.com.cn .i ...

  3. _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc637612fae5a3b585.php

    将one think部署到服务器上出现下面的问题 _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc6376 ...

  4. excel怎么制作实线虚线混排的折线图

    excel怎么制作实线虚线混排的折线图 excel怎么制作实线虚线混排的折线图?excel表格中想要设计的图表是实线的,想要让图标同时显示虚线和实线,该怎么操? 通常在在使用折线图描述数据的趋势时,前 ...

  5. NOIP模拟 7.04

    魔术球问题弱化版(ball.c/.cpp/.pas) [题目描述] 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,…的球. (1)每次只能在某根柱子的最上面放球. ( ...

  6. pandas使用手册

    工欲善其事必先利其器,在使用Python做数据挖掘和数据分析时,一大必不可少的利器就是Pandas库了.pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,其纳入了大量库 ...

  7. golang变量-数据类型一

    package main import "fmt" var t1 = 100 var t2 = 200 var t3 = 300 var ( u1 = 100 u2 = 200 u ...

  8. python 同名变量引用

  9. HDU 4193

    本题思路:用sum[]数组维护前缀和, 当然这里需要把原数组扩大为原来的两倍. 然后对于任意一个长度为n的区间 k.....k+n-1,如果有该区间内的最小值大于等于sum[k-1]那么该种情况就符合 ...

  10. char和achar互转

    #pragma once#include "stdafx.h" #ifndef _Convert_H_#define _Convert_H_ //定义转换类class Conver ...