题目

竞赛: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)相关推荐

  1. 2022.04.10-高宝琪毕设阶段性汇报

    第11次汇报 (2022.04.10) 经过了几天的努力, 终于跑通了最后的"分析数字化后的心电数据"这一部分; 采用了Flask框架将一个Keras深度学习模型部署到了Web端, ...

  2. [LeetCode专场复盘] AutoX 安途智行专场竞赛

    [LeetCode专场复盘] AutoX 安途智行专场竞赛 一.本周周赛总结 二. AutoX-1. 网页瀑布流 1. 题目描述 2. 思路分析 3. 代码实现 三.AutoX-2. 蚂蚁王国的蜂蜜 ...

  3. 数学建模学习视频及资料集(2022.08.10)

    2021高中数学建模(应用)能力展示活动细则详解(上) 2021高中数学建模(应用)能力展示活动细则详解(上)_哔哩哔哩_bilibili 2021高中数学建模(应用)能力展示活动细则详解(下) 20 ...

  4. AI公开课:19.04.10颜水成—360副总裁《人工智能:观察与实践》课堂笔记以及个人感悟—191017再次更新

    AI公开课:19.04.10颜水成-360副总裁<人工智能:观察与实践>课堂笔记以及个人感悟 导读       颜水成,新加坡国立大学副教授.360集团副总裁.人工智能研究院院长. 颜水成 ...

  5. 2022年美国大学生数学建模竞赛——Problem E:林业固碳

    2022年美国大学生数学建模竞赛--Problem E:林业固碳 背景 正如我们所知,气候变化对生命构成了巨大的威胁.为了减轻气候变化的影响,我们需要采取有力的行动来减少大气中的温室气体.仅仅减少温室 ...

  6. 2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 问题一python代码实现(更新完毕)

    2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新完毕) 更新信息 2022-11-24 10:00 更新问题1和问题2 思路 2022-11-24 23:20 更新问 ...

  7. 2022年美国大学生数学建模竞赛C题贸易策略解题全过程文档及程序

    2022年美国大学生数学建模竞赛 C题 贸易策略 原题再现:   背景:   市场贸易者经常购买和销售股票,目标是最大化他们的总回报.针对每次购买和销售,经常会存在回报提成.两个案例是金子和比特币. ...

  8. 上海市计算机学会2022年10月月赛丙组解题报告

    上海市计算机学会2022年10月月赛丙组解题报告 直角三角形的判定 题目描述 给定三个正整数表示三角形的三条边,请判定它是否为直角三角形 输入格式 第一行:三个整数 a,b 与 c 输出格式 若可以构 ...

  9. gnome桌面打造日常使用操作系统(支持Arch Linux、Fedora、Ubuntu)(2022.04.17更新)

    更新日志 日期 内容 2022.04.03 完成初稿 2022.04.05 更新sublime和imwheel 2022.04.06 添加所有软件在Feroda的安装方法 2022.04.07 添加所 ...

最新文章

  1. 股票有风险!切莫因为赚了几百亏了几万
  2. QT的QSplineSeries类的使用
  3. 2015年上半年总结
  4. IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)
  5. 007---多态与多态性
  6. 操作系统-信号量机制;用信号量机制实现进程互斥、同步、前驱关系
  7. uniapp接收服务器消息,uniapp如何请求服务器数据
  8. 封装自己的js库(二)---仿照JQuery
  9. 【自动化】自动化工厂需要的十大工控产品
  10. IO系统性能之二:缓存和RAID如何提高磁盘IO性能
  11. 【python-docx】长度单位(毫米、厘米、英尺、磅等)的表示和转换关系
  12. 部署开源LWM2M服务器 leshan
  13. 阿里云ONS消息队列入门指南
  14. CSS学习笔记----CSS3自定义字体图标
  15. 未来架构师的平台战略范例(4)_大数据
  16. zoj1025 dp(呃。。)
  17. 黑客是如何攻击目标电脑的
  18. 微信小程序人工智能之添加学生信息
  19. 2022年末29个省市区14企业征信机构分析及申请建议
  20. Java基础知识11——数组

热门文章

  1. 中国石油大学远程教育《弟子规》
  2. 介绍适用于Visual Studio的node.js工具
  3. Divide by 2 or 3
  4. Maven - 2、安装、配置、mvn运行过程详解
  5. UI自动化控制微信发送文件【解决了一个无人回答的难题,Pywin32设置文件到剪切板】
  6. java代码混淆 项目加密解决方案 class文件加密 支持JDK16
  7. list的stream流常用用法
  8. MOOC数据结构 第8周测验
  9. 2022年PMI-ACP考试大纲是什么?快来看
  10. SAP假脱机打印解决方法