当前位置: 首页 > news >正文

打卡信奥刷题(2925)用C++实现信奥题P5627 P5662 [CSP-J 2019] 纪念品

P5662 [CSP-J 2019] 纪念品

题目描述

小伟突然获得一种超能力,他知道未来TTTNNN种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。

每天,小伟可以进行以下两种交易无限次

  1. 任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;
  2. 卖出持有的任意一个纪念品,以当日价格换回金币。

每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有纪念品也是可以的。

TTT天之后,小伟的超能力消失。因此他一定会在第TTT天卖出所有纪念品换回金币。

小伟现在有MMM枚金币,他想要在超能力消失后拥有尽可能多的金币。

输入格式

第一行包含三个正整数T,N,MT, N, MT,N,M,相邻两数之间以一个空格分开,分别代表未来天数TTT,纪念品数量NNN,小伟现在拥有的金币数量MMM

接下来TTT行,每行包含NNN个正整数,相邻两数之间以一个空格分隔。第iii行的NNN个正整数分别为Pi,1,Pi,2,…,Pi,NP_{i,1},P_{i,2},\dots,P_{i,N}Pi,1,Pi,2,,Pi,N,其中Pi,jP_{i,j}Pi,j表示第iii天第jjj种纪念品的价格。

输出格式

输出仅一行,包含一个正整数,表示小伟在超能力消失后最多能拥有的金币数量。

输入输出样例 #1

输入 #1

6 1 100 50 20 25 20 25 50

输出 #1

305

输入输出样例 #2

输入 #2

3 3 100 10 20 15 15 17 13 15 25 16

输出 #2

217

说明/提示

样例 1 说明

最佳策略是:

第二天花光所有100100100枚金币买入555个纪念品111

第三天卖出555个纪念品111,获得金币125125125枚;

第四天买入666个纪念品111,剩余555枚金币;

第六天必须卖出所有纪念品换回300300300枚金币,第四天剩余555枚金币,共305305305枚金币。

超能力消失后,小伟最多拥有305305305枚金币。

样例 2 说明

最佳策略是:

第一天花光所有金币买入101010个纪念品111

第二天卖出全部纪念品111得到150150150枚金币并买入888个纪念品222111个纪念品333,剩余111枚金币;

第三天必须卖出所有纪念品换回216216216枚金币,第二天剩余111枚金币,共217217217枚金币。

超能力消失后,小伟最多拥有217217217枚金币。

数据规模与约定

对于10%10\%10%的数据,T=1T = 1T=1

对于30%30\%30%的数据,T≤4,N≤4,M≤100T \leq 4, N \leq 4, M \leq 100T4,N4,M100,所有价格10≤Pi,j≤10010 \leq P_{i,j} \leq 10010Pi,j100

另有15%15\%15%的数据,T≤100,N=1T \leq 100, N = 1T100,N=1

另有15%15\%15%的数据,T=2,N≤100T = 2, N \leq 100T=2,N100

对于100%100\%100%的数据,T≤100,N≤100,M≤103T \leq 100, N \leq 100, M \leq 10^3T100,N100,M103,所有价格1≤Pi,j≤1041 \leq P_{i,j} \leq 10^41Pi,j104,数据保证任意时刻,小伟手上的金币数不可能超过10410^4104

C++实现

#include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;constintMAXN=105;intdp[10005],price[MAXN][MAXN];intmain(){intt,n,m,ans;scanf("%d%d%d",&t,&n,&m);for(inti=1;i<=t;++i){for(intj=1;j<=n;++j){scanf("%d",&price[i][j]);}}ans=m;for(inti=1;i<t;++i){memset(dp,~0x3f,sizeof(dp));dp[ans]=ans;for(intj=1;j<=n;++j){for(intk=ans;k>=price[i][j];--k){dp[k-price[i][j]]=max(dp[k-price[i][j]],dp[k]+price[i+1][j]-price[i][j]);}}intma=0;for(intj=0;j<=ans;++j){ma=max(ma,dp[j]);}ans=ma;}cout<<ans<<endl;return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/454350/

相关文章:

  • Zoom视频会议断线卡顿SD-WAN技术:解决办法大揭秘!
  • 赴美物流不踩坑:优质美国货代公司推荐+实操干货,新手也能选对 - 品牌评测官
  • 万爱通礼品卡回收靠谱吗?分析线上平台的回收优势 - 团团收购物卡回收
  • 毕业论文神器!人气爆表的一键生成论文工具 —— 千笔写作工具
  • 2026年打工人福音!萌新华为云上及本地部署OpenClaw(Clawdbot) 集成T钉钉保姆级步骤
  • 2026全国知名的SSL证书品牌推荐:速安信,高性价比的国产SSL证书之选 - 麦麦唛
  • 为什么优秀程序员总在拆函数?因为代码应该表达意图,而不是实现
  • 2026交通执法5g执法记录仪选购推荐榜:高清执法记录仪、高清红外执法记录仪、4g执法记录仪、4g智能安全帽选择指南 - 优质品牌商家
  • 将 DeepSeek 模型接入 Claude Code
  • 2000-2024年上市公司资产专用性数据(三种测度)+Stata代码
  • Kubenets集群安装记录02
  • Nature 正刊:可个性化适配所有左心耳类型的磁流体机器人
  • Abaqus中利用USDFLD子程序在TIG焊接降温阶段改变材料参数及高斯热源DFlux联合仿...
  • OpenClaw + Claude Code 超强教程:一个人就能搭建完整的开发团队
  • 2026年打工人必备Skill!新手华为云上及本地部署OpenClaw(Clawdbot) 集成小红书保姆级步骤
  • Java 中线程之间如何进行通信?
  • 无界等待:系统故障的隐形杀手
  • 四参数随机生长法(QSGS算法)在随机孔隙结构与微观孔隙优化处理中的应用:多孔介质随机生长软件...
  • 小程序商城制作流程,专业商城系统开发 - 码云数智
  • 连接、控制与精进:深入探索 Psycopg2 的现代 PostgreSQL 开发实践
  • 英伟达受挫,TPU能否改写算力格局?
  • 美校申请不内耗!十大留学中介实力护航冲藤校 - 博客湾
  • 【声呐技术】窄带干扰抑制技术:一项综述
  • 穿越周期:国际物流新格局下的理性选择与价值发现 - 品牌评测官
  • AI驱动的数据分类分级实战:从入门到进阶的自动化识别指南
  • 2005-2024年全国城市域名备案数据库
  • 零基础实战:靶场商场网站漏洞利用与安全测试
  • 留学中介TOP10实测|文书全流程服务最能打? - 博客湾
  • 【阅读笔记】OpenClaw入门
  • 【飞机】基于matlab光流的着陆和悬停机动仿真【含Matlab源码 15124期】