社区讨论

求调

P2918[USACO08NOV] Buying Hay S参与者 3已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mistmdzk
此快照首次捕获于
2025/12/05 20:08
2 个月前
此快照最后确认于
2025/12/09 01:52
2 个月前
查看原帖
CPP
//998244353
#include<bits/stdc++.h>
#define itn int
#define int long long
using namespace std;
const int N=50010;
int dp[N],p[N],c[N],n,m,output=0x3f3f3f;
signed main()
{
	memset(dp,0x3f3f3f,sizeof(dp));
	dp[0]=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>p[i]>>c[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=N;j++)
		{
			if(j>=p[i])
			{
				dp[j]=min(dp[j],dp[j-p[i]]+c[i]);
			}
		}
	}
	for(int i=m;i<=N;i++)
	{
		output=min(output,dp[i]);
	}
	cout<<output;
}
为什么改成下面的就对了?
CPP
//998244353
#include<bits/stdc++.h>
#define itn int
#define int long long
using namespace std;
const int N=60010;
int dp[N],p[N],c[N],n,h,output=0x3f3f3f3f;
signed main()
{
	for(int i=1;i<=N;i++)
	{
		dp[i]=0x3f3f3f3f;
	}
	cin>>n>>h;
	for(int i=1;i<=n;i++)
	{
		cin>>p[i]>>c[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=60000;j++)
		{
			if(j>=p[i])
			{
				dp[j]=min(dp[j],dp[j-p[i]]+c[i]);
			}
		}
	}
	for(int i=h;i<=60000;i++)
	{
		output=min(output,dp[i]);
	}
	cout<<output;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...