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;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 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)