SMU Autumn 2024 Personal Round 1

Ke_scholar發表於2024-10-07

SMU Autumn 2024 Personal Round 1

前言

拉了,後面有空再補補。

A. Lex String

思路

排序後取最小,記錄連續取了幾個,不要超過 \(k\) 個即可。

程式碼

#include <bits/stdc++.h>

using namespace std;

using i64 = long long;

void solve() {

	int n, m, k;
	cin >> n >> m >> k;

	string a, b;
	cin >> a >> b;

	sort(a.begin(), a.end(), greater<>());
	sort(b.begin(), b.end(), greater<>());

	string c = "";
	int o = 0, p = 0;
	while (n && m) {
		if (a[n - 1] < b[m - 1] && o < k || p >= k) {
			c += a[n - 1];
			n --, o ++;
			p = 0;
		} else {
			c += b[m - 1];
			m --, p ++;
			o = 0;
		}
	}

	cout << c << '\n';

}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int t;
	cin >> t;
	while (t--) {
		solve();
	}

	return 0;
}

B - Creep

思路

前面用01或者10串填滿,後面放剩下的。

程式碼

#include <bits/stdc++.h>

using namespace std;

using i64 = long long;

void solve() {

	int a[2];
	cin >> a[0] >> a[1];

	int n = a[0] + a[1] , k = a[0] > a[1] ? 0 : 1;
	string s = "01";
	for (int i = 0; i < n; i ++) {
		if (a[0] && a[1]) {
			cout << s[k];
			a[k] --;
			k ^= 1;
		} else {
			cout << s[k];
		}
	}

	cout << '\n';

}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int t;
	cin >> t;
	while (t--) {
		solve();
	}

	return 0;
}

C. Mystic Permutation

思路

資料小,直接暴搜即可。

程式碼

#include <bits/stdc++.h>

using namespace std;

using i64 = long long;

void solve() {

	int n;
	cin >> n;

	vector<int> p(n + 1);
	for (int i = 1; i <= n; i ++) {
		cin >> p[i];
	}

	bool ok = 0;
	vector<int> ans(n + 1), vis(n + 1);
	auto dfs = [&](auto && self, int pos)->void{
		if (ok) return;

		if (pos == n + 1) {
			ok = 1;
			for (int i = 1; i <= n; i ++) {
				cout << ans[i] << " \n"[i == n];
			}
			return ;
		}

		for (int i = 1; i <= n; i ++) {
			if (ok) break;
			if (i != p[pos] && !vis[i]) {
				ans[pos] = i;
				vis[i] = 1;
				self(self, pos + 1);
				vis[i] = 0;
			}
		}
	};

	dfs(dfs, 1);

	if (!ok)
		cout << "-1\n";
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int t;
	cin >> t;
	while (t--) {
		solve();
	}

	return 0;
}

相關文章