洛谷 P6205 [USACO06JAN] Dollar Dayz S

P6205 [USACO06JAN] Dollar Dayz S    完全背包 计数型

题意:

yao去商场买东西,有k种东西,东西的价格分别为1,2,……k,yao手里有N元,必须全部花完,他有多少种购买方式呢

分析:

这个题相当于说是每个东西的价钱都告诉你了,然后可以买无限次一个东西,那么我们很自然的想到完全背包,相当于说是我们之前选了j-i元的东西的方案+买了一个价值为i的物品的方案,所以转移方程就很好想f [j ] += f [ j – I ];

同时要注意,这里的数字超级大,爆longlong 所以要用__int128 编写快读快写

代码:
//快写
typedef __int128 ll;
ll f[1001];
int n, m;
int print(ll x) {//快写
	if(x == 0) return putchar(48) + putchar(10);
	if(x >= 10) print(x / 10);
	putchar(x % 10 + 48);
}
--------------------------------------------------------------分割线
f[0]=1;//初始化!让n为0时的方案数为1 
	for(int i=1;i<=k;i++)//枚举每一个物品 
	{
		for(int j=i;j<=n;j++)//必须大于i,否则买不了/kk 
		{
			f[j]+=f[j-i];//那么这个方案数就是上面所推导的一坨 
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值