动态规划 2017大数据研究中心夏令营上机考试 E:开餐馆

dp[i]表示在i处开餐馆能够获得的最大利润。

一开始想错思路了,以为是0/1背包问题,怎么都套不上。。。实在想不通去百度,发现应该类似最大子序列和,条件由相邻变成相隔k

事实证明建模真的很重要 T T

#include
#include
using namespace std;
int m[101],p[101],dp[101];
void solve()
{
	int n,k,i,j,ans;
	cin>>n>>k;
	memset(dp,0,sizeof(dp));
	for (i=0;i>m[i];
	for (i=0;i>p[i];
	ans=p[0];
	for (i=0;ik)
				dp[i]=max(dp[j]+p[i],dp[i]);
		ans=max(ans,dp[i]);
	}
	cout<>t;
	while(t--)
		solve();
	return 0;
}

你可能感兴趣的:(dp)