提问
查看原帖
提问
1437044
Sfrbyz111楼主2025/2/5 10:33

为什么第二层循环正序逆序都能过?

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m;
ll a[30],b[30];
ll dp[30][210];
void init()
{
	memset(dp,0x7f,sizeof(dp));
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>a[i]>>b[i];
		dp[i][0]=0;
	}
	dp[0][0]=0;
}
int main()
{
	init();
	for(int i=1;i<=m;i++)
	{
		for(int j=n;j>=0;j--)
		{
			for(int k=0;k<=j;k++) 
			{
				dp[i][j]=min(dp[i][j],dp[i-1][j-k]+a[i]*(ll)pow((double)k,(double)b[i]));
			}
		}
	}
	cout<<dp[m][n];
	return 0;
}
2025/2/5 10:33
加载中...