首页 > 其他分享 >SMU Autumn 2024 Personal Round 1

SMU Autumn 2024 Personal Round 1

时间:2024-10-07 15:35:12浏览次数:13  
标签:2024 int SMU long Autumn -- while solve using

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;
}

标签:2024,int,SMU,long,Autumn,--,while,solve,using
From: https://www.cnblogs.com/Kescholar/p/18450143

相关文章

  • 2024熵密杯wp
    第一部分:初始谜题这一部分算是开胃菜,形式也更像平时见到的CTF题目,三个题目都是python加密的,做出其中任意一个就可以进入第二部分,也就是一个更类似真实情境的大型密码渗透系统。但每个初始谜题都是有分数的,所以就算开了第二部分也当然要接着做。每个题目也都有前三血的加成,一血5%,二......
  • 2024高校网络安全管理运维赛 wp
    0x00前言本文是关于“2024高校网络安全管理运维赛”的详细题解,主要针对Web、Pwn、Re、Misc以及Algorithm等多方向题目的解题过程,包含但不限于钓鱼邮件识别、流量分析、SQLite文件解析、ssrf、xxe等等。如有错误,欢迎指正。0x01Misc签到给了一个gif,直接在线分帧得到synt{fvtava-dh......
  • 2024.10.6训练记录
    下午cfA到!B签到题,考场还是写挂了,今天码力差。挂在while动指针的时候没有判右边界,似。唐诗程度不亚于数组开小。C1猜出来结论是第一次出现需要按照一开始的顺序就能过。C2把一开始的排列映射到[1,n]。修改时用set动态维护每个数第一次出现的位置。把第一次出现位置的......