首页 > 其他分享 >P1853 投资的最大效益 题解

P1853 投资的最大效益 题解

时间:2023-03-25 10:56:20浏览次数:62  
标签:int 题解 sum 效益 债券 P1853 总资产 ri 1000

题目传送门

更好的阅读体验

题目大意

有初始总资产 \(s\) 和债券种数 \(d\),每种债券有投资额和年利息,求 \(n\) 年后的最大总资产。

解题思路

完全背包问题(每种债券可以投资多次)。

把当前总资产看成背包,把债券看成物品。

枚举年数,每次做完全背包,并把最后得到的最大总资产累加,投资到下一年。

完全背包:

  • 划分阶段:当前的债券;
  • 状态表达:\(f_j\) 表示投资钱数 \(j\) 所获得的最大利息;
  • 状态转移:\(f_j=\max(f_j,f_{j-w_i}+v_i)\);
  • 初始状态:\(f_j=0\);
  • 求解目标:\(f_{sum}\)(\(sum\) 为上一年的最大总资产);

注意求每年的最大总资产时先将 \(f\) 数组清零

优化:题目中说债券的投资额是 \(1000\) 的倍数,所以可以把债券的投资额都除以 \(1000\)(\(sum\) 也要除以 \(1000\)),最后的结果不变。

代码

AC 记录

#include<bits/stdc++.h>
#define ri register int
using namespace std;
int m,n,d;
int w[15],v[15],f[1000005];
int main() {
	cin>>m>>n>>d;
	int sum=m;//初始总资产
	for(ri i=1; i<=d; i++)cin>>w[i]>>v[i];
	for(ri k=1; k<=n; k++) {
		memset(f,0,sizeof(f));//初始状态(清零) 
		for(ri i=1; i<=d; i++)//阶段 
			for(ri j=w[i]/1000; j<=sum/1000; j++)//决策 
				f[j]=max(f[j],f[j-w[i]/1000]+v[i]);//状态转移
		sum+=f[sum/1000];//累加最大总资产
	}
	cout<<sum;
	return 0;
}

标签:int,题解,sum,效益,债券,P1853,总资产,ri,1000
From: https://www.cnblogs.com/zzyblog0619/p/17254300.html

相关文章

  • 题解:【COCI2019-2020#6】 Trener
    题目链接本人于三月二十四日模拟赛本题中使用\(\mathcalO(n^2k+nk^2)\)哈希+DP,因神秘常数原因竟打不过\(\mathcalO(n^2k^2)\),甚至被卡的TLE飞起,怒挂五十分。赛......
  • 训练round1题解
    SMUSpring2023TrialContestRound1A.大意:给出一个仅由0,1组成的字符串,该字符串是多次在首位各加0或1得到,问最短的原始字符串的长度。思路:一次操作增加两个字符,特......
  • [ABC276G] Count Sequences 题解
    考虑差分,设\(d_i=a_i-a_{i-1}\),特别的,\(d_1=a_1\),那么约束就变成了\(\displaystyle\sumd_i\lem\)。对所有\(i>1\)有\(d_i\not\equiv0\pmod3\)。发现\(d_1\)......
  • CSP20230319-4 星际网络II 题解
    〇、题目题目描述随着星际网络的进一步建设和规模的增大,一个新的问题出现在网络工程师面前——地址空间不够用了!原来,星际网络采用了传统的IPv6协议,虽然有\(2^{128}\)级......
  • 【sklearn版本问题解决】
    一、报错fromsklearn.utils.validationimportcheck_memoryImportError:cannotimportname'check_memory'二、解决1.首先我去看了相关位置的源码发现validation.py里......
  • 关于安装google-colab包速缓慢的问题解决
    最近想从colab上重构源码包在本地实现,但是总有一个包是来自google.colab的fromgoole.colabimportfiles提示没有google.colab的安装模块,需要安装google-colab的这个包......
  • T324159 卡空间的题目/电脑白吃 题解
    https://www.luogu.com.cn/problem/T324159题目大意:给定一个大小为\(n\)的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于\(\lfloor\frac{n}{2}\rfloo......
  • CF1168C And Reachability 题解 线性dp
    题目链接https://codeforces.com/problemset/problem/1168/C题目大意给定一个数组\(a\),从下标\(x\)能够转移到下标\(y\)要满足\(x\lty\)且\(a_{p_i}\,\&\,a......
  • P3489 [POI2009]WIE-Hexer 题解
    一、题目描述:大陆上有 n 个村庄,m 条双向道路,p 种怪物,k 个铁匠,铁匠都在一个村庄里,他可会给你打造他所能打造的所有剑,特定的剑可以对付特定的怪物,每条道路上都可......
  • P4221 [WC2018]州区划分 题解
    题目链接题目描述给出\(n\)个城市,\(m\)条边,一个划分合法当且仅当所有划分中的点集和集合中点之间存在的边集所构成的图不构成欧拉回路且联通。定义一个点集的值为......