68pts求助
查看原帖
68pts求助
352866
RoyWu1207楼主2022/7/25 09:59
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

long long n, m, a[300001], b[300001];
long long MST = 0, row = 1, column = 1, edgesum = 0;

int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) 
		cin >> a[i];
	for (int i = 1; i <= m; i++)
		cin >> b[i];
	stable_sort(a + 1, a + n + 1); stable_sort(b + 1, b + n + 1);
	MST = a[1] * (m - 1) + b[1] * (n - 1); edgesum = n + m - 2;
	while (edgesum < n * m - 1) {
		if (a[column + 1] < b[row + 1])
			MST += a[++column] * (m - row), edgesum += m - row;
		else
			MST += b[++row] * (n - column), edgesum += n - column;
	} cout << MST;
	return 0;
}
2022/7/25 09:59
加载中...