全输出-1求调
  • 板块P9688 Colo.
  • 楼主Vitamin_B
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/3 12:15
  • 上次更新2023/11/2 16:21:09
查看原帖
全输出-1求调
743373
Vitamin_B楼主2023/10/3 12:15
# include <bits/stdc++.h>

# define ffor(i,name) \
	for (auto i = name.begin (); i != name.end (); i ++)

# define reg register

using namespace std;

typedef long long ll;

typedef pair <int, int> pii;

typedef pair <ll, ll> pll;

struct node {

	int l, r, price;

} a[505];

int t, n, k, b[505], dp[505][505], m, maxx = -1;

int main () {

	ios::sync_with_stdio (0);

	cin.tie (0);

	cout.tie (0);

	cin >> n >> k;

	for (int i = 1; i <= n; ++ i) {

		cin >> b[i];

		if (! a[b[i]].l)
			a[b[i]].l = i;

		a[b[i]].r = i;

		m = max (m, b[i]);

	}

	for (reg int i = 1; i <= n; ++ i)
		cin >> a[i].price;

	for (reg int i = 0; i <= n; ++ i)
		for (reg int j = 1; j <= k; ++ j)
			dp[i][j] = -114514;

	for (reg int i = 1; i <= n; ++ i)
		for (reg int p = 0; p <= n; ++ p)
			if (! p || b[p] < b[i] && a[p].r < a[i].l)
				for (reg int j = 1; j <= k; ++ j)
					dp[b[i]][j] = max (dp[b[i]][j], dp[b[p]][j - 1] + a[i].price);

	for (reg int i = 1; i <= n; ++ i)
		maxx = max (maxx, dp[i][k]);

	cout << maxx;

	return 0;

}
2023/10/3 12:15
加载中...