商店购物 (shopping.c/cpp/pas)

1、商店购物 (shopping.c/cpp/pas)

在滨海市开着 n 家商店,编号依次为 1 到 n,其中编号为 1 到 m 的商店有日消费量上 限,第 i 家商店的日消费量上限为 wi。 海霸王每次购物的过程是这样的:依次经过每家商店,然后购买非负整数价格的商品,并 在结账的时候在账本上写上在这家商店消费了多少钱。当然,他在这家商店也可以什么都不 买,然后在账本上写上一个 “0”。 这一天,海霸王日常完成了一次购物,但是他不慎遗失了他的账本。他只记得自己这一 天一共消费了多少钱,请写一个程序,帮助海霸王计算有多少种可能的账单。

Input 第一行包含三个正整数 n, m, k,分别表示商店的个数、有限制的商店个数以及总消费量。 第二行包含 m 个整数,依次表示 w1, w2, ..., wm。

Output 输出一行一个整数,即可能的账单数,由于答案可能很大,请对 109 + 7 取模输出。

Notes 100% 的数据,1 ≤m ≤ n,0 ≤ wi ≤ 300,1 ≤ n, k ≤ 5000000。

测试点编号 n m wi k

约定

1-2 ≤100 ≤100 ≤100 ≤1000 n=m

3-5 ≤100 ≤100 ≤300 ≤100000 无

6-7 ≤5000000 ≤20 ≤300 ≤5000000 无

8-10 ≤5000000 ≤300 ≤300 ≤5000000 无



solution

我们考虑特殊处理有限制的商店。

令f[i][j]表示前i个商店花j元钱的方案数。

f[i][j]= f[i-1][k]   j-v[i] <= k <= j

可以前缀和优化成n*sumw的

剩下的就是插板法乱选了

原文地址:https://www.cnblogs.com/liankewei/p/10547070.html

时间: 2024-10-11 04:12:00

商店购物 (shopping.c/cpp/pas)的相关文章

洛谷P2732 商店购物 Shopping Offers

P2732 商店购物 Shopping Offers 23通过 41提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 在商店中,每一种商品都有一个价格(用整数表示).例如,一朵花的价格是 2 zorkmids (z),而一个花瓶的价格是 5z .为了吸引更多的顾客,商店举行了促销活动. 题目描述 促销活动把一个或多个商品组合起来降价销售,例如: 三朵花的价格是 5z 而不是 6z, 两个花瓶和一朵花的价格是 10z 而不是

shell脚本(2)商店购物

商店购物 1.2.3. 原文地址:http://blog.51cto.com/13813317/2151925

商店购物

某商店中每种商品都有一个价格.特殊优惠商品是把一种或几种商品分成一组.并降价销售.编一个程序,计算某个顾客所购商品应付的费用. 要充分利用优惠价以使顾客付款最小.你不能变更顾客所购商品的种类及数量. 输入数据 用两个文件表示输入数据.第一个文件INPUT.TXT描述顾客所购物品(放在购物筐中);第二个文件描述商店提供的优惠商品及价格(文件名为OFF ER.TXT). 两个文件中都只用整数. 第一个文件INPUT.TXT的格式为:第一行是一个数字B(0≤B≤5),表示所购商品种类数.下面共B行,每

USACO Training 3.3 商店购物 By cellur925

题目传送门 这道题有着浓浓的背包气氛.所以我们可以这样想:可以把每个优惠方案都当做一个物品,每个单买所需要花的钱也当做一个物品.(也就是代码中的p结构体数组)而且基于此题的环境,这题是一个完全背包.另外因为本题的算法比较亲民,至多买5种物品,每种物品最多买5个,所以我们可以(开创性地)使用五维背包. 状态:设f[i][j][k][a][b]表示买i件物品1,j件物品2,k件物品3,a件物品4,b件物品5所需要的最小价钱.(也就是说,我们熟悉的背包模板中f[i]中i的含义从体积在此题背景下变成了购

bzoj 3657 斐波那契数列(fib.cpp/pas/c/in/out)

空间 512M  时限2s [题目描述] 有n个大于1的正整数a1,a2,…,an,我们知道斐波那契数列的递推式是f(i)=f(i-1)+f(i-2),现在我们修改这个递推式变为f(i)=f(i-1)+f(i-2)+r(i-1),其中r(x)为a1,a2,…,an中为x的约数的个数.现在要求f(m) mod 19940417的值.注:初值f(1)=1,f(2)=1 输入格式: 第一行两个数n,m. 接下来一行n个正整数a1,a2,…,an. 输出格式: 输出一行仅一个数,f(m) mod 199

bzoj2260: 商店购物 &amp;&amp; 4349: 最小树形图

Description Grant是一个个体户老板,他经营的小店因为其丰富的优惠方案深受附近居民的青睐,生意红火.小店的优惠方案十分简单有趣.Grant规定:在一次消费过程中,如果您在本店购买了精制油的话,您购买香皂时就可以享受2.00元/块的优惠价:如果您在本店购买了香皂的话,您购买可乐时就可以享受1.50元/听的优惠价……诸如此类的优惠方案就是说:如果您在本店购买了商品A的话,您就可以以P元/件的优惠价格购买商品B(购买的数量不限).有趣的是,你需要购买同样一些商品,由于不同的购买顺序,Gr

Java版本-----商店购物系统

buy.java public class Buy { public static void main(String[] args) { // TODO Auto-generated method stub Shops shops = new Shops(); } } shops.java import java.util.Scanner; public class Shops { public static int m; public static int numberCup = 0 , nu

YZOI Easy Round 2_化简(simplify.c/cpp/pas)

Description 给定一个多项式,输出其化简后的结果. Input 一个字符串,只含有关于字母x 的多项式,不含括号与分式,没有多余的空格. Output 一个字符串,化简后的多项式,按照次数从大到小的顺序输出各项. Input Sample x^3+3*x^4-2*x^3+1-x Output Sample 3*x^4-x^3-x+1 Hint 每项系数<10,次数<6,项数<20.字符串长度不超过100. 很烦的模拟   代码如下: #include<iostream&g

[Lydsy2017省队十连测]商店购物

SOL: 我们可以前面写背包,后面组合数. #include<bits/stdc++.h> #pragma GCC optimize("-O2") #define mo 1000000007 #define N 10000007 #define LL long long using namespace std; #define sight(x) ('0'<=x&&x<='9') inline void read(LL &x){ stati