朴素n^5dp求助
查看原帖
朴素n^5dp求助
464004
ZepX_D楼主2023/12/3 19:43
#include <bits/stdc++.h>
#define LL long long

using namespace std;

int c[2010][2010];
LL f[200][200][200];

int main()
{
	//freopen("d.in","r",stdin);
	//freopen("d.out","w",stdout);
	//ios::sync_with_stdio(0);
	int n;cin >> n;
	for (int i = 1;i <= n;i++)
		for (int j = i;j <= n;j++)
			cin >> c[i][j];
	for (int i = 1;i <= n;i++) f[i][i][i] = c[i][i];
	for (int k = 2;k <= n;k++)
	{
		for (int l = 1;l+k-1 <= n;l++)
		{
			int r = l+k-1;
			for (int p = l;p <= r;p++)
			{
				LL ka = 1e17,kb = 1e17,kc = 1e17;
				for (int z = l;z < p;z++) ka = min(ka,f[l][p-1][z]);
				for (int z = p+1;z <= r;z++) kb = min(kb,f[p+1][r][z]);
				if (ka == 1e17) ka = 0;if (kb == 1e17) kb = 0;
				for (int L = l;L <= p;L++)
					for (int R = p;R <= r;R++)
						kc = min(kc,1LL*c[L][R]);
				f[l][r][p] = ka+kb+kc;
			}
		}
	}
	LL ans = 1e18;
	for (int i = 1;i <= n;i++)
		ans = min(ans,f[1][n][i]);
	cout << ans;
	return 0;
}

rt,感觉状态和转移都没有问题

2023/12/3 19:43
加载中...