求助一道站外题
  • 板块灌水区
  • 楼主X2H_tato
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/8/26 17:08
  • 上次更新2023/11/4 08:55:53
查看原帖
求助一道站外题
324226
X2H_tato楼主2021/8/26 17:08

原题链接

蒟蒻是用三维数组写的,好像比内存限制多了4倍,有dalao可以帮忙看看怎么让内存变小点吗(

BDFS过,题解都是二位数组写的

#include <bits/stdc++.h>
using namespace  std;
int a[105][2],dp[105][1005][505];
int main()
{
	int n,m,k1;
	cin>>n>>m>>k1;
	for(int i=1;i<=k1;i++)
		cin>>a[i][0]>>a[i][1];
	for(int i=1;i<=k1;i++)
	 	for(int j=1;j<=n;j++)
			for(int k=1;k<=m;k++)
			{
			 	dp[i][j][k]=dp[i-1][j][k];
			 	if(j>=a[i][0]&&k>=a[i][1]&&dp[i][j][k]<dp[i-1][j-a[i][0]][k-a[i][1]]+1)
			   		dp[i][j][k]=dp[i-1][j-a[i][0]][k-a[i][1]]+1;
			}
	cout<<dp[k1][n][m-1]<<" ";
	int ans=dp[k1][n][m-1];
	int s=0x7ffff;
	for(int j=1;j<=n;j++)
		for(int k=1;k<=m;k++)
		{
			if(dp[k1][j][k]==ans)
			{
				s=min(s,k);
			}
		}
	cout<<m-s<<endl;
	return 0;
}

似乎代码本身没问题

2021/8/26 17:08
加载中...