[BZOJ1578] [Usaco2009 Feb]Stock Market 股票市场(DP)

Posted 蒟蒻zht的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[BZOJ1578] [Usaco2009 Feb]Stock Market 股票市场(DP)相关的知识,希望对你有一定的参考价值。

传送门

 

可以看出

第一天买,第三天卖 == 第一天买,第二天卖完再买,第三天卖

所以我们只考虑前一天买,后一天卖即可

那么有按天数来划分

f[i][j]表示前i天,共有j元,最大的盈利

第一维可以省去

那么有两种选择,不买 或者 前一天买,后一天卖

 

#include <cstdio>
#include <cstring>
#include <iostream>
#define N 500001
#define max(x, y) ((x) > (y) ? (x) : (y))

int s, d, m;
int f[N], a[51][51];

inline int read()
{
	int x = 0, f = 1;
	char ch = getchar();
	for(; !isdigit(ch); ch = getchar()) if(ch == ‘-‘) f = -1;
	for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - ‘0‘;
	return x * f;
}

int main()
{
	int i, j, k;
	s = read();
	d = read();
	m = read();
	for(i = 1; i <= s; i++)
		for(j = 1; j <= d; j++)
			a[i][j] = read();
	for(i = 2; i <= d; i++)
	{
		memset(f, 0, sizeof(f));
		for(j = 1; j <= s; j++)
			for(k = a[j][i - 1]; k <= m; k++)
				f[k] = max(f[k], f[k - a[j][i - 1]] + a[j][i] - a[j][i - 1]);
		m += f[m];
	}
	printf("%d\n", m);
}

  

 

以上是关于[BZOJ1578] [Usaco2009 Feb]Stock Market 股票市场(DP)的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1578/Usaco2009 FebStock Market 股票市场——完全背包

bzoj1579 [Usaco2009 Feb]Revamping Trails 道路升级

[BZOJ3398] [Usaco2009 Feb]Bullcow 牡牛和牝牛(动态规划)

bzoj1579: [Usaco2009 Feb]Revamping Trails 道路升级

Bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 dijkstra,堆,分层图

bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 优先队列+dij