首页 > 编程语言 >南沙C++信奥赛陈老师解一本通题 1984:【19CSPJ普及组】纪念品

南沙C++信奥赛陈老师解一本通题 1984:【19CSPJ普及组】纪念品

时间:2024-10-02 08:50:20浏览次数:6  
标签:小伟 1984 纪念品 int 信奥赛 金币 通题 100 dp

 【题目描述】

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

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

1.任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;

2.卖出持有的任意一个纪念品,以当日价格换回金币。

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

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

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

【输入】

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

接下来 TT 行,每行包含 N 个正整数,相邻两数之间以一个空格分隔。第 i行的N 个正整数分别为 Pi,1,Pi,2,……,Pi,N,其中 Pi,j表示第 i天第 j种纪念品的价格。

【输出】

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

【输入样例】

6 1 100
50
20
25
20
25
50

【输出样例】

305

【提示】

【输入输出样例 1 说明】

最佳策略是:

第二天花光所有 100 枚金币买入 5 个纪念品 1;

第三天卖出 5 个纪念品 1,获得金币 125 枚;

第四天买入 6 个纪念品 1,剩余 5 枚金币;

第六天必须卖出所有纪念品换回 300 枚金币,第四天剩余 5 枚金币,共 305 枚金币。

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

【输入输出样例 2】

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

 

【输入输出样例 2】

217

 

【输入输出样例 2 说明】

最佳策略是:

第一天花光所有金币买入 10 个纪念品 1;

第二天卖出全部纪念品 1 得到 150 枚金币并买入 8 个纪念品 2 和 1 个纪念品 3,剩余 1 枚金币;

第三天必须卖出所有纪念品换回 216 枚金币,第二天剩余 1 枚金币,共 217 枚金币。

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

【数据规模与约定】

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

对于 30% 的数据,T≤4,N≤4,M≤100,所有价格 10≤Pi,j≤100。

另有 15% 的数据,T≤100,N=1。

另有 15% 的数据,T=2,N≤100。

对于 100% 的数据,T≤100,N≤100,M≤103,所有价格 1≤Pi,j≤104,数据保证任意时刻,小明手上的金币数不可能超过104

#include <bits/stdc++.h>
using namespace std;
int dp[201][10005];  //i为行件物品放到容易为j为列的背包产生的最大价值 
int w[201],v[201],a[201][201]; //分别为重量 价值 
int Pack(int n,int m)	//完全背包  注意背包容易m每天是递增的 
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(w[i]>j)
				dp[i][j]=dp[i-1][j];
			else
			{
				int put=v[i]+dp[i][j-w[i]];
				int noput=dp[i-1][j];
				dp[i][j]=max(put,noput);
			}
		}
	}
	return dp[n][m];
}
int main()
{
	int t, n, m;
	cin>>t>>n>>m;
	for(int i=1;i<=t;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	for(int i=1;i<t;i++)
	{
		memset(w,0,sizeof(w));
		memset(v,0,sizeof(v));
		memset(dp,0,sizeof(dp));
		for(int j=1;j<=n;j++)
		{
			w[j]=a[i][j];
			v[j]=a[i+1][j]-a[i][j];
		}
		m += Pack(n,m);////每天后背包容量增值了 
	}
	cout << m; 
	return 0;
}

 

 

标签:小伟,1984,纪念品,int,信奥赛,金币,通题,100,dp
From: https://www.cnblogs.com/nanshaquxinaosai/p/18444398

相关文章

  • 南沙C++信奥赛陈老师解一本通题 1983:【19CSPJ普及组】公交换乘
    ​ 【题目描述】著名旅游城市B市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:1、在搭乘一次地铁后可以获得一张优惠票,有效期为 4545 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间......
  • 南沙C++信奥赛陈老师解一本通题: 1963:【13NOIP普及组】小朋友的数字
    ​ 【题目描述】有 nn 个小朋友排成一列。每个小朋友手上都有一个数字,这个数字可正可负。规定每个小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值。作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:......
  • 南沙C++信奥赛陈老师解一本通题 2005:【20CSPJ普及组】直播获奖
    ​ 【题目描述】NOI2130即将举行。为了增加观赏性,CCF决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%w%,即当前排名前 w%w% 的选手的最低成绩就是即时的分数线。更具体地,若当前已评出了 pp 个选手的成绩,则当前计划获奖人数为 max(1,⌊p∗w%......
  • 南沙C++信奥赛陈老师解一本通题1965:【14NOIP普及组】珠心算测验
    ​ 【题目描述】珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不......
  • 南沙C++信奥赛陈老师解一本通题:1945:【09NOIP普及组】多项式输出
    ​ 【题目描述】一元 nn 次多项式可用如下的表达式表示: f(x)=anxn+an−1xn−1+...+a1x+a0,an≠0f(x)=anxn+an−1xn−1+...+a1x+a0,an≠0 其中,aixii 称为i次项,ai称为ii次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:1.多项式中......
  • 南沙C++信奥赛陈老师解一本通题 1269:【例9.13】庆功会
    ​ 【题目描述】为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。【输入】第一行二个数n(n≤500),m(m≤6000),其中n代表希望购买的奖品的种数,m表示拨款金额。接......
  • 南沙C++信奥赛陈老师解一本通题 1922:【03NOIP普及组】乒乓球
    ​ 【题目描述】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不......
  • 南沙C++信奥赛陈老师解一本通题 1942:【08NOIP普及组】ISBN号码
    ​ 【题目描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语音,例如......
  • 南沙C++信奥赛陈老师解一本通题 1973:【16NOIP普及组】买铅笔
    ​ 【题目描述】P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小......
  • 南沙C++信奥赛老师解一本通题1217:棋盘问题
    ​ 【题目描述】在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 kk 个棋子的所有可行的摆放方案 CC。【输入】输入含有多组测试数据。每组数据......