luogu题解 P5020 货币系统
Posted zwp2004
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu题解 P5020 货币系统 相关的知识,希望对你有一定的参考价值。
思路
判断钱数是否可以转化为其他钱数的和
与楼下不同,我没有用sort。而是用了一个数组来特判。
思路其实只是简单dp。
详见代码。
#include<cstdio>
using namespace std;
int t;
int main()
{
scanf("%d",&t);
while(t>0)
{
t--;
int n;
scanf("%d",&n);
int a[30000],d[30000]={0},c=0,f[30000]={0};
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]>c)c=a[i];
d[a[i]]=-1;//注意,d数组开了特判,不用sort原因
}
int jss=n;
for(int i=1;i<=c;i++)//哈希
{
int dd=0;//确保只减一次
for(int j=1;j<=n;j++)
{
if(i-a[j]==0)f[i]=a[j];//f[i]可以设为bool
//f[i]=a[j]中a[j]无实际意义
if(i-a[j]>0)
if(f[i-a[j]]!=0)
{
if(d[i]==-1&&dd==0)jss--,dd=1;
f[i]=f[i-a[j]]+a[j];
}
}
}
printf("%d
",jss);
}
}
加油,我们离神犇会越来越近,祝大家noip2018RP++;
以上是关于luogu题解 P5020 货币系统 的主要内容,如果未能解决你的问题,请参考以下文章
luogu P5020ybtoj背包问题课堂过关DP例题2货币系统 & NOIP2018 提高组货币系统
P5020 [NOIP2018 提高组] 货币系统(完全背包 dp)