Shopping商店购物

P2732 [USACO3.3]商店购物 Shopping Offers 题目传送门:P2732 [USACO3.3]商店购物 Shopping Offers 这道题乍一看,压根看不懂,再看,看懂题了,第三眼,发现是动规,冥思苦想了半天想出来一个特别暴力的办法 首先我瞄准了小数据,最多只会有 5 种,所以我决定直接五维 dp f[i][j][k][l][m]f[i][j][k][l][m]f[i][j][k][l][m] 表示在第一个物品有 iii 个,表示在第二个物品有 jjj 个,表示在第三个物品有 kkk 个,表示在第四个物品有 lll 个,表示在第五个物品有 mmm 个, 阅读详情

问题 M: 【动态规划】商店购物
时间限制: 1 Sec 内存限制: 64 MB

题目描述

魔法商店中每种商品都有一个价格。例如,一朵花的价格是2 元,一个花瓶的价格是5 元。为了吸引更多的顾客,商店提供了特殊优惠价。
特殊优惠商品是把一种或几种商品分成一组。并降价销售。例如:3朵花的价格不是6元而是5 元;2个花瓶加1朵花是10 元不是12元。
编一个程序,计算某个顾客所购商品应付的费用。要充分利用优惠价以使顾客付款最小。请注意,你不能变更顾客所购商品的种类及数量,即使增加某些商品会使付款总数减小也不允许你作出任何变更。假定各种商品价格用优惠价如上所述,并且某顾客购买物品为3朵花和2个花瓶。那么顾客应付款为14 元。因为1朵花加2个花瓶的优惠价为10元;2朵花的正常价为4元。

输入
输入包括一些商店提供的优惠信息,接着是购物清单。
第一行为优惠商品的种类数(0≤ s ≤ 99)。
第二行到第s+1 行,每一行都用几个整数来表示一种优惠方式。第一个整数 n (1 ≤ n ≤ 5),表示这种优惠方式由 n 种商品组成。后面 n 对整数 c 和 k 表示 k (1≤ k ≤5)个编号为 c (1≤ c ≤ 999)的商品共同构成这种优惠,最后的整数 p 表示这种优惠的优惠价(1≤ p ≤ 9999)。优惠价总是比原价低。
第 s+2 行,这一行有一个整数 b (0≤ b ≤5),表示需要购买 b 种不同的商品。
第 s+3 行…第 s+b+2 行,这 b 行中的每一行包括三个整数:c ,k和 p 。c 表示唯一的商品编号(1 ≤ c ≤ 999),k 表示需要购买的 c 商品的数量(1≤k ≤5)。p 表示 c 商品的原价(1 ≤ p≤ 999)。最多购买 5×5=25 个商品。

输出
只有一行,输出一个整数:购买这些商品的最低价格。
样例输入

2
1 7 3 5
2 7 1 8 2 10
2
7 3 2
8 2 5

样例输出

14

思路:完全背包+状压

#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
using namespace std;
struct youh {
    int n,p,w,sum,c[6],k[6];
}Y[110];
int n,s,ans,C[6],K[6],P[6],f[8000];
int findit(int cc) {
    for (int i=0;i<n;++i)
        if (C[i]==cc) return i;
}
int fun(int a,int b){
    int s=0;
    for (int i=0;i<5;++i){
        if (a%6>=b%6) s+=(int)pow(6,i)*(a%6-b%6);
        else return -1;
        a/=6;
        b/=6;
    }
    return s;
}
int main() {
    while (~scanf("%d",&s)){
        for (int i=1;i<=s;++i) {
            scanf("%d",&Y[i].n);
            for (int j=0;j<Y[i].n;++j) scanf("%d%d",&Y[i].c[j],&Y[i].k[j]);
            scanf("%d",&Y[i].p);
        }

        scanf("%d",&n);
        int V=0,S=0;
        for (int i=0;i<n;++i) {
            scanf("%d%d%d",&C[i],&K[i],&P[i]);
            V+=K[i]*P[i];
            S+=(int)pow(6,i)*K[i];
        }

        for (int i=1;i<=s;++i) {
            int ss=0,sum=0;
            for (int j=0; j<Y[i].n; ++j) {
                ss+=P[findit(Y[i].c[j])]*(Y[i].k[j]);
                sum+=(int)pow(6,findit(Y[i].c[j]))*Y[i].k[j];
            }
            Y[i].w=ss-Y[i].p;
            Y[i].sum=sum;
        }
        memset(f,0,sizeof f);
        for (int i=1;i<=s;++i)
            for (int v=0;v<7776;++v){
                if (fun(v,Y[i].sum)==-1) continue;
                f[v]=max(f[v],f[fun(v,Y[i].sum)]+Y[i].w);
            }
        printf("%d\n",V-f[S]);
    }
    return 0;
}
最少费用购物问题 动态规划 简单清晰的代码风格,完备的代码注释,详细的实验报告 算法分析。你值得拥有。 问题描述: 商店中每种商品都有标价。例如,一朵花的价格是2 元。一个花瓶的价格是5 元。为了吸引顾客,商店提供了一组优惠商品价。优惠商品是把一种或多种商品分成一组,并降价销售。例如,3 朵花的价格不是6 元而是5 元。2 个花瓶加1 朵花的优惠价是10 元。设计一个算法,计算出某一顾客所购商品应付的最少费用。 立即下载

相关推荐

我行我素购物系统

shop.jar 我行我素购物系统

动态规划问题最少费用问题 C++版本

这两天遇到算法课设,题目是有关动态规划问题. 一.问题描述: 商店中每种商品都有标价.例如,一朵花的价格是2元.一个花瓶的价格是5元.为了吸引顾客,商店提供了一组优惠商品价. 优惠商品是把一种或多种商品分成一组,并降价销售.例如,3朵花的价格不是6元而是5元.2个花瓶加1朵花的优惠价是10元.是设计一种算法,计算出某一顾客所购商品应付的最少费用. 分析:在我看来这就像是背包问题的逆向思维,原本是找...

weixin_44358757的博客 3813

Tlsr8258开发-程序烧写

开源一小步,进步一大步

自学嵌入式 1774

算法课设 -- 会场安排问题与最少花费购物问题(详解)

最少花费购物问题 问题描述: 商店中每种商品都有标价。例如,一朵花的价格是2元。一个花瓶的价格是5 元。为了 吸引顾客,商店提供了一组优惠商品价。优惠商品是把一种或多种商品分成一组,并降价销 售。例如,3朵花的价格不是6元而是5元。2 个花瓶加1 朵花的优惠价是10 元。试设计一 个算法,计算出某一顾客所购商品应付的最少费用。 编程任务: 对于给定欲购商品的价格和数量,以及优惠商品价,编程计算所购商品应付的最少费用。 代码实现: #include <iostream> using namespa

ifwecande的博客 2042

【基金量化研究系列】基金绩效归因模型——Brinson多期归因模型

文章目录1. 引言2. Brinson单期归因模型2.1 模型框架2.2 公式推导3. Brinson多期归因模型3.1 模型框架3.2 公式推导4. Brinson模型的应用场景4.1 基金组合归因4.2 基金经理能力刻画4.3 大类资产配置应用5. 模型的实现与实证案例研究写在最后 1. 引言 在 2. Brinson单期归因模型 2.1 模型框架 wp wb rp 组合收益:wp rp 择股收益:wb rp rb 择时收益:wp rb 基准收益:wb rb 2.2 公式推

Mikey_Sun的博客 1万+

DVWA靶场实战:从搭建到渗透测试的完整指南

本文详细介绍了DVWA靶场的搭建与渗透测试全流程,涵盖LAMP环境搭建、Docker部署及集成环境安装三种方式。通过SQL注入、文件上传漏洞等实战案例,帮助读者掌握Web安全测试技巧,并提供防御方案与进阶调优建议,是网络安全学习的实用指南。

weixin_28312391的博客 490

python实现最小费用购物问题

问题描述: 商店中每种商品都有标价.例如,一朵花的价格是2元.一个花瓶的价格是5元.为了吸引顾客,商店提供了一组优惠商品价. 优惠商品是把一种或多种商品分成一组,并降价销售.例如,3朵花的价格不是6元而是5元.2个花瓶加1朵花的优惠价是10元.是设计一种算法,计算出某一顾客所购商品应付的最少费用. 参考的知识:动态规划. 程序语言不限. 题目分析: 首先确定需要哪些数据,要想实现这个题目,我们...

cat_little_cat的博客 3297

【fNIRS可视化学习1】基于NIRS-SPM进行光极可视化并计算通道坐标

设头皮上的目标点为P₀(x₀, y₀, z₀),需要在大脑皮层点集S上找到最合适的投影点P'。

Rose9614的博客 2208

经典算法动态规划之商品最优购买问题

问题描述 **最小费用购物:**商店中每种商品都有标价。例如,一朵花的价格是2元,一个花瓶的价格是5元。为了吸引客户,商店提供了一组优惠价格商品。优惠价格是把一种或者多种商品分成一组,并且降价销售。例如:三朵花的价格不是6元而是5元。2个花瓶加一朵花的优惠价格是10元。是设计一种算法,计算出某一顾客所购商品应付的最小费用。 ...

weixin_42452337的博客 1万+

Codesys软运动控制进阶:用SMC_FreeEncoder为ECAT轴搭建一个“虚拟手轮”调试工具

本文详细介绍了如何利用Codesys的SMC_FreeEncoder功能为ECAT轴搭建虚拟手轮调试工具,解决自动化设备开发中的硬件依赖问题。通过软件模拟手轮脉冲信号,实现无硬件依赖的运动控制逻辑验证,显著提升调试效率。适用于汇川AM400等PLC平台,特别适合机械安装滞后或伺服驱动器故障时的调试场景。

weixin_33737774的博客 480

强化学习实战:如何用PPO算法训练一个超级马里奥AI(附完整代码)

本文提供了一份详细的强化学习实战指南,教你如何使用PPO算法训练一个能玩《超级马里奥》的AI智能体。内容涵盖从环境搭建、自定义奖励函数设计到PPO智能体的PyTorch完整实现,并附有可运行的代码,帮助开发者快速上手游戏AI开发。

h6j7k8l9p0的博客 947

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

1、商店购物 (shopping.c/cpp/pas) 在滨海市开着 n 家商店,编号依次为 1 到 n,其中编号为 1 到 m 的商店有日消费量上 限,第 i 家商店的日消费量上限为 wi。 海霸王每次购物的过程是这样的:依次经过每家商店,然后购买非负整数价格的商品,并 在结账的时候在账本上写上在这家商店消费了多少钱。当然,他在这家商店也可以什么都不 买,然后在账本上写上一个 “0”。 这一天...

weixin_30466039的博客 207

Solidworks钣金设计:折弯系数、K因子与折弯扣除的实战应用解析

本文深入解析Solidworks钣金设计中折弯系数、K因子与折弯扣除的核心概念与实战应用。通过厘清三者间的逻辑关系与换算方法,并结合材料特性、工艺参数及车间实测,指导工程师精准确定展开长度,确保设计图纸与加工实物的一致性,有效提升钣金件设计精度与生产效率。

weixin_29268267的博客 924

洛谷P2732 商店购物 Shopping Offers

P2732 商店购物 Shopping Offers 23通过 41提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交讨论题解 最新讨论 暂时没有讨论 题目背景 在商店中,每一种商品都有一个价格(用整数表示)。例如,一朵花的价格是 2 zorkmids (...

weixin_30239339的博客 275

Open3D (C++) KD tree的使用【2025最新版】

Open3D (C++) KD tree的使用,博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 1566

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【USACO题库】3.3.2 Shopping Offers商店购物

这题我打的真的是千辛万苦啊!!! 先打了个贪心,呵呵WA50。。。 然后知道有一个五维DP的方法(真的是简单易懂) 设f[i][j][k][l][v]表示 第一个还剩i个 第二个还剩j个 第三个还剩k个 第四个还剩l个 第五个还剩v个 看看吧,真多啊 接着暴力转移n个(记得判一下能否转移) 每次转移的时候都看看将它剩下的全部单价购买后的价钱能否影响ans #include&amp;lt;cstdio&amp;gt...

Larry1118的博客 608

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[USACO3.3] 商店购物 Shopping Offers

在商店中,每一种商品都有一个价格(用整数表示)。例如,一朵花的价格是 $2$ ,而一个花瓶的价格是 $5$。为了吸引更多的顾客,商店举行了促销活动。

ahui_is_so_cool的博客 324

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

P2732 商店购物 Shopping Offers(5维dp,背包)

题目背景 在商店中,每一种商品都有一个价格(用整数表示)。例如,一朵花的价格是 2 zorkmids (z),而一个花瓶的价格是 5z 。为了吸引更多的顾客,商店举行了促销活动。 题目描述 促销活动把一个或多个商品组合起来降价销售,例如: 三朵花的价格是 5z 而不是 6z, 两个花瓶和一朵花的价格是 10z 而不是 12z。 编写一个程序,计算顾客购买一定商品的花费,尽量利用优惠使花费最少。尽管...

tomjobs的博客 856

CodeForces 599A Patrick and Shopping (商店购物最短路程)

A. Patrick and Shopping time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Today Patrick waits for a visit from

Shyazhut 585

【DP-完全背包-离散化】USA3.1——商店购物 Shopping Offers

前言 如果熟练掌握背包等DP的运用的话,这道题很水的 不过我是不会说我因为一个“ * ”打成了“ + ”改了一晚上的qwq... 题目 题目背景 在商店中,每一种商品都有一个价格(用整数表示)。例如,一朵花的价格是 2 zorkmids (z),而一个花瓶的价格是 5z 。为了吸引更多的顾客,商店举行了促销活动。 题目描述 促销活动把一个或多个商品组合起来降价销售,例如: 三朵花的...

十里寒塘路♣烟花一半醒 359

商店购物 Shopping Offers(完全背包问题+结构体使用)

P2732 商店购物 Shopping Offers 72通过135提交 题目提供者该用户不存在标签 USACO 云端 难度 提高+/省选- 时空限制 1s / 128MB 最新讨论 暂时没有讨论 题目背景 在商店中,每一种商品都有一个价格(用整数表示)。例如,一朵花的价格是 2 zorkmids (z),而

Pig_cfbsl的博客 1051

购物搜索引擎/比较购物网站

 随着加入比较购物网站的服务商数量和产品数量的迅速增加,比较购物网站已经与搜索引擎具有类似的特征,即作为用户查询商品信息的工具,为制定购买决策提供支持,因此一些网站开始逐渐放弃比较购物一词,而改称为购物搜索引擎。   2004年3月26日,国外许多IT新闻网站发布了雅虎以5.75亿美元收购欧洲第一大比较购物网站Kelkoo的消息,这使得比较购物这一“古老”的商业

Jason 1969
上一篇: Angel
下一篇: Cellphone Number手机号码
cybbsc
博客等级 码龄10年 15粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值