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

【Web实战】微信小程序逆向

2E 70 6E 67”为带存放路径的文件名称,“00 00 11 7C”对应文件在小程序包中的具体偏移位置,“00 01 01 F7“对应文件在小程序包中的数据长度。但这并不是最初的原项目文件结构,原因是微信服务器会将小程序源码中所有的“js”文件压入“app-service.js”文件中,将所有的“json”文件压入“app-config.json”中,将所有的“wxml”文件压入“page-frame.html”文件中,“wxss”则在处理之后以“html”文件的形式存留在对应页面目录之下。

若有战,召必回 1946

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

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

ifwecande的博客 2042

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 305

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 313

python实现最小费用购物问题

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

cat_little_cat的博客 3297

【智驾与大模型】端到端与多模态大模型的精彩之旅

智驾和大模型的回顾与展望。开头的笔者自述也说了些心窝子话,边缘计算的监管刻不容缓!

仿生实验室:从0到1,制作人脸表情交互机器人,记录过程,软硬件全部开源,与君共襄盛举! 1319

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

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

weixin_42452337的博客 1万+

Flink项目基础配置指南

在大数据处理领域,Apache Flink凭借强大的实时流处理和批处理能力,成为众多开发者的首选工具。在日常工作中,开发Flink Jar任务是常见需求,但每次都需重复配置日志、梳理pom依赖、设置打包插件等,流程繁琐且易出错。为提升开发效率,减少重复劳动,将这些基础配置进行整理归纳十分必要。本文将围绕Flink项目的本地日志配置、pom依赖及插件配置展开详细介绍,为开发者提供一套可直接复用的基础配置方案,助力Flink项目高效开发。在Flink项目中,日志是了解任务运行状态、排查问题的重要依据。本地日志配

qq_42773076的博客 1210

使用cubeMX生成USB HID设备

本文主要介绍如何使用stm32开发板和cubeMX生成HID设备,供参考。

专注音频,高效工作,快乐生活! 970

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

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

weixin_30466039的博客 207

【PostgreSQL】Windows11下的PostgreSQL数据库安装tds_fdw扩展及使用(图文记录详细步骤)

【详解】【PostgreSQL】Windows11下的PostgreSQL数据库安装tds_fdw扩展及使用

tttzzzqqq2018的博客 2453

洛谷P2732 商店购物 Shopping Offers

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

weixin_30239339的博客 275

30天入门 SAP BTP 开发系列之十四: 将 SAP Business Application Studio 里开发好的 Node.js 应用部署到 Cloud Foundry 环境中

本教程详细介绍了如何将SAP Business Application Studio中的Node.js应用部署到Cloud Foundry环境。在完成本地开发和测试后,通过cf login命令连接Cloud Foundry环境,配置manifest.yml文件指定应用参数和路由信息。使用cf push命令完成应用的上传和部署,最终使应用运行在SAP BTP的云端环境中。教程包含从路由创建到部署验证的完整流程,确保开发者能够成功将Node.js应用发布到生产环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1080

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[USACO3.3] 商店购物 Shopping Offers

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

ahui_is_so_cool的博客 324

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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、付费专栏及课程。

余额充值