【LG5020】[NOIP2018]货币系统
【LG5020】[NOIP2018]货币系统
题面
题解
考场上第一眼还不会233
可以发现只要可以被其他的货币通过一些奇奇怪怪的方式表示出来的货币就\(ban\)掉即可
就是个完全背包
我是统计的方案数,用\(unsigned\) \(long\) \(long\)防炸\(int\)
就算炸掉了无符号长整型也可能对
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
using namespace std;
inline int gi() {
register int data = 0, w = 1;
register char ch = 0;
while (ch != '-' && !isdigit(ch)) ch = getchar();
if (ch == '-') w = -1, ch = getchar();
while (isdigit(ch)) data = data * 10 + ch - '0', ch = getchar();
return w * data;
}
#define MAX_N 105
#define MAX_V 25005
int N, a[MAX_N];
unsigned long long dp[MAX_V];
#define RG register
void solve() {
dp[0] = 1;
for (RG int i = 1; i <= N; i++) {
for (RG int j = a[i]; j <= a[N]; j++) dp[j] += dp[j - a[i]];
}
}
int main () {
int T = gi();
while (T--) {
N = gi(); for (int i = 1; i <= N; i++) a[i] = gi();
sort(&a[1], &a[N + 1]);
N = unique(&a[1], &a[N + 1]) - a - 1;
memset(dp, 0, sizeof(dp));
solve();
int ans = N;
for (int i = 1; i <= N; i++) if (dp[a[i]] > 1) ans--;
printf("%d\n", ans);
}
return 0;
}
【LG5020】[NOIP2018]货币系统的更多相关文章
- luogu5020 [NOIp2018]货币系统 (完全背包)
我那个新的货币系统,就是把原来的货币系统中能被其他数表示的数删掉 那我就算有多少数能被别的数表示,那肯定是要被比它小的表示 于是排个序做完全背包就好了 但是我太zz不会完全背包,然后写了个bitset ...
- NOIP2018货币系统
题目大意 给出一组数,求出其中共有多少数不能被其他数表示 解题思路 法一:可爱的动态规划 这个思路还是比较好想的(也比较好写?) 有依赖关系的背包,思路这道题是差不多的 填满型01背包 (关于代码) ...
- [NOIp2018]货币系统 背包
LG传送门 完全背包板子题 显然就是判断有多少种面值的货币可以被其他面值的货币表示,完全背包搞一搞就好了. 考场代码(一看这两格缩进就知道是考场代码): #include<cstdio> ...
- 【比赛】NOIP2018 货币系统
可以发现最后的集合一定是给定集合的子集 所以就变成了裸的背包嘛,对于每个数判断它能不能被其它数表示出来,如果可以,就表示这个数是没用的,可以去掉 #include<bits/stdc++.h&g ...
- NOIP2018 货币系统
题面 思路 先分析一下,a集合的子集肯定不存在可以用它来表示的数,a集合是不能够表示的. 所以问题简化了成为选出a的一个子集(个数最少),能够表达a集合所有能表达的数. 接下来继续分析 如:1 2 4 ...
- [NOIp2018提高组]货币系统
[NOIp2018提高组]货币系统 题目大意: 有\(n(n\le100)\)种不同的货币,每种货币的面额为\([1,25000]\)之间的一个整数.若两种货币系统能够组合出来的数是相同的的,那我们就 ...
- 【数学】【背包】【NOIP2018】P5020 货币系统
传送门 Description 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 \(n ...
- [NOIp2018] luogu P5020 货币系统
还在补暑假作业. 题目描述 你有一个由 NNN 种面值的货币组成的货币系统.定义两个货币系统等价,当且仅当 ∀x∈N∗\forall x\in\N^*∀x∈N∗ 要么同时能被两个货币系统表示,要么同时 ...
- @NOIP2018 - D1T2@ 货币系统
目录 @题目描述@ @题解@ @代码@ @题目描述@ 在网友的国度中共有 n 种不同面额的货币,第 i 种货币的面额为 a[i],你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 n.面额 ...
随机推荐
- github air项目中遇到的几个问题及解决(nodejs居多)
https://github.com/cambecc/air 1.按照github中给出的步骤,执行到npm install,项目中的package.json包含了要安装的包的版本,但是安装的时候,p ...
- F、CSL 的神奇序列 【规律】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)
题目传送门:https://ac.nowcoder.com/acm/contest/551/F 题目描述 CSL 有一个神奇的无穷实数序列,他的每一项满足如下关系: 对于任意的正整数 n ,有 n∑k ...
- [19/04/17-星期三] Java的动态性_反射(Reflection)机制
一.前言 动态语言:程序运行时,可以改变程序结构或变量类型.典型的代表:Python,ruby,JavaScript 如JavaScript代码: function test(){ var s=&qu ...
- docker-7-常用软件的安装
1.总体步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 停止容器 移除容器 2.安装tomcat docker hub上面查找tomcat镜像:docker search tomcat 从doc ...
- [Python 多线程] Condition (十)
Condition常用于生产者.消费者模型,为了解决生产者消费者速度匹配问题. 构造方法Condition(lock=None),可以传入一个Lock或RLock对象,默认RLock. 方法: acq ...
- coco定义的小物体中物体大物体的尺寸
http://cocodataset.org/#detection-leaderboard
- sqoop2启动job报错
set option --name verbose --value true #打开报错详情输出 Exception has occurred during processing command ...
- 关于python接口基础到进阶随笔
想了很久,闲来无事,今天想了下还是总结了下写下来,部分参考官方源码理解,还有就是这么久的理解, 如果觉得有帮助请记得点赞 先讲下接口url组成拿后台服务为例 通常一个后台请求url格式: http:/ ...
- 用javascript调用表单验证事件时,为什么return false了还是把表单submit了?
表单提交前,都会有定义一个验证的方法以对用户提交的内容进行限定,今天写到了这个,但出现了一个好郁闷的东西,就是一点提交了,调用我自己写的一个CheckForm()方法时,我明明写了return fal ...
- EF Core 中多次从数据库查询实体数据,DbContext跟踪实体的情况
使用EF Core时,如果多次从数据库中查询一个表的同一行数据,DbContext中跟踪(track)的实体到底有几个呢?我们下面就分情况讨论下. 数据库 首先我们的数据库中有一个Person表,其建 ...