leetcode 2022.04.10 招商银行专场竞赛 D.商店促销活动(dp)
题目
竞赛:2022招商银行专场竞赛
D题:商店促销活动
n(n<=1e5)件商品,
第i件商品,要么去商店A买,花费ai(ai<=1e4),要么去商店B买,花费bi(bi<=1e4)
两个商店有不同的优惠活动,求买n件商品的最小代价和是多少
- 商店
A
的优惠活动:- 购买商品满三件及以上商品可以打七折(向下取整),不满三件则无任何优惠
- 商店
B
的优惠活动:- 每购买三件商品,可以免去其中价格最低的一件商品的价格
题解
直接粘自己在leetcode写的题解好了(摆烂)
4.10 招商银行专场 题解【不会dp不改名】 - 力扣(LeetCode)
dp[i][4][3]表示前i个,a数组取了0/1/2/>=3个,b数组发生囤积的个数有0/1/2个时的最小代价和。
分两次dp进行,
第一次钦定取够3个(转移按0.7倍转移,只把a>=3的终态当合法状态)。
第二次钦定不够3个(转移按原价转移,只把a<3的终态当合法状态)。
转移时,考虑让第i个选a或是选b。
特别地,当b已经屯了两个的时候,选了第三个,会让第三个免费。
代码是先把代价*7,*10,最后总代价除以10。
代码
class Solution {
public:typedef long long ll;ll dp[2][4][3];struct node{int a,b;node(){}node(int aa,int bb):a(aa),b(bb){}friend bool operator<(node a,node b){return a.b>b.b;}};void ckmin(ll &x,ll y){x=min(x,y);}int goShopping(vector<int>& a, vector<int>& b) {int n=a.size();vector<node>c;for(int i=0;i<n;++i){c.push_back(node(a[i],b[i]));}sort(c.begin(),c.end());memset(dp,127,sizeof dp);dp[0][0][0]=0;for(int i=0;i<n;++i){int nex=(i+1)&1,now=i&1;for(int j=0;j<=3;++j){for(int k=0;k<3;++k){ckmin(dp[nex][min(j+1,3)][k],dp[now][j][k]+c[i].a*7ll);ckmin(dp[nex][j][(k+1)%3],dp[now][j][k]+(k==2?0:c[i].b*10ll));}}memset(dp[now],127,sizeof dp[now]);}ll ans=1e10;for(int k=0;k<3;++k){ckmin(ans,dp[n&1][3][k]);}memset(dp,127,sizeof dp);dp[0][0][0]=0;for(int i=0;i<n;++i){int nex=(i+1)&1,now=i&1;for(int j=0;j<3;++j){for(int k=0;k<3;++k){if(j+1<3)ckmin(dp[nex][j+1][k],dp[now][j][k]+c[i].a*10ll);ckmin(dp[nex][j][(k+1)%3],dp[now][j][k]+(k==2?0:c[i].b*10ll));}}memset(dp[now],127,sizeof dp[now]);}for(int j=0;j<3;++j){ for(int k=0;k<3;++k){ckmin(ans,dp[n&1][j][k]);}}return ans/10;}
};
leetcode 2022.04.10 招商银行专场竞赛 D.商店促销活动(dp)相关推荐
- 2022.04.10-高宝琪毕设阶段性汇报
第11次汇报 (2022.04.10) 经过了几天的努力, 终于跑通了最后的"分析数字化后的心电数据"这一部分; 采用了Flask框架将一个Keras深度学习模型部署到了Web端, ...
- [LeetCode专场复盘] AutoX 安途智行专场竞赛
[LeetCode专场复盘] AutoX 安途智行专场竞赛 一.本周周赛总结 二. AutoX-1. 网页瀑布流 1. 题目描述 2. 思路分析 3. 代码实现 三.AutoX-2. 蚂蚁王国的蜂蜜 ...
- 数学建模学习视频及资料集(2022.08.10)
2021高中数学建模(应用)能力展示活动细则详解(上) 2021高中数学建模(应用)能力展示活动细则详解(上)_哔哩哔哩_bilibili 2021高中数学建模(应用)能力展示活动细则详解(下) 20 ...
- AI公开课:19.04.10颜水成—360副总裁《人工智能:观察与实践》课堂笔记以及个人感悟—191017再次更新
AI公开课:19.04.10颜水成-360副总裁<人工智能:观察与实践>课堂笔记以及个人感悟 导读 颜水成,新加坡国立大学副教授.360集团副总裁.人工智能研究院院长. 颜水成 ...
- 2022年美国大学生数学建模竞赛——Problem E:林业固碳
2022年美国大学生数学建模竞赛--Problem E:林业固碳 背景 正如我们所知,气候变化对生命构成了巨大的威胁.为了减轻气候变化的影响,我们需要采取有力的行动来减少大气中的温室气体.仅仅减少温室 ...
- 2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 问题一python代码实现(更新完毕)
2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新完毕) 更新信息 2022-11-24 10:00 更新问题1和问题2 思路 2022-11-24 23:20 更新问 ...
- 2022年美国大学生数学建模竞赛C题贸易策略解题全过程文档及程序
2022年美国大学生数学建模竞赛 C题 贸易策略 原题再现: 背景: 市场贸易者经常购买和销售股票,目标是最大化他们的总回报.针对每次购买和销售,经常会存在回报提成.两个案例是金子和比特币. ...
- 上海市计算机学会2022年10月月赛丙组解题报告
上海市计算机学会2022年10月月赛丙组解题报告 直角三角形的判定 题目描述 给定三个正整数表示三角形的三条边,请判定它是否为直角三角形 输入格式 第一行:三个整数 a,b 与 c 输出格式 若可以构 ...
- gnome桌面打造日常使用操作系统(支持Arch Linux、Fedora、Ubuntu)(2022.04.17更新)
更新日志 日期 内容 2022.04.03 完成初稿 2022.04.05 更新sublime和imwheel 2022.04.06 添加所有软件在Feroda的安装方法 2022.04.07 添加所 ...
最新文章
- 股票有风险!切莫因为赚了几百亏了几万
- QT的QSplineSeries类的使用
- 2015年上半年总结
- IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)
- 007---多态与多态性
- 操作系统-信号量机制;用信号量机制实现进程互斥、同步、前驱关系
- uniapp接收服务器消息,uniapp如何请求服务器数据
- 封装自己的js库(二)---仿照JQuery
- 【自动化】自动化工厂需要的十大工控产品
- IO系统性能之二:缓存和RAID如何提高磁盘IO性能
- 【python-docx】长度单位(毫米、厘米、英尺、磅等)的表示和转换关系
- 部署开源LWM2M服务器 leshan
- 阿里云ONS消息队列入门指南
- CSS学习笔记----CSS3自定义字体图标
- 未来架构师的平台战略范例(4)_大数据
- zoj1025 dp(呃。。)
- 黑客是如何攻击目标电脑的
- 微信小程序人工智能之添加学生信息
- 2022年末29个省市区14企业征信机构分析及申请建议
- Java基础知识11——数组