Processing math: 100%

NOIP2018 货币系统

货币系统

简单分析一下,不难得出结论:
m最小时,相当于把A系统简化,除去可以被A中其他元素组合的多余元素。
接下来是我没有想到的重点!!
若有一个数s能被之前的数a_i表示出来,那么(s - a_i)也能被之前的数表示出来
所以我们用f[i]表示i能否被表示出来。
我们定义边界f[0]=1
每次把处理到的a[i]标记,然后筛除比a[i]大的那些可表示为a[i]+a[k] (0<k<i)的数

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int T, n, a[25005], dp[25005], ans = 0;
int read(){
	int x = 0, ch = getchar();
	while(ch < '0' || ch > '9') ch = getchar();
	while(ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
	return x;
}
int main(){
	cin >> T;
	while(T--){
		memset(a, 0, sizeof a);
		memset(dp, 0, sizeof dp);
		n = read(), ans = n;
		for(int i = 1; i <= n; i++)
			a[i] = read();
		sort(a + 1, a + n + 1); 
		dp[0] = 1;
		for(int i = 1; i <= n; i++){
			if(dp[a[i]]){
				ans--;
				continue;
			}
			for(int j = a[i]; j <= a[n]; j++)
				dp[j] |= dp[j - a[i]];
		}
		cout << ans <<"\n"; 
	}	
	return 0;
}
posted @   hélium  阅读(124)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示