【码蹄杯】2025年本科组省赛第一场

在这里插入图片描述

个人主页:Guiat
归属专栏:算法竞赛

在这里插入图片描述

正文

总共8道题。

1. MC0455 · 四大名著-西游签到

【题目】 MC0455 · 四大名著-西游签到

【AC_Code】

#include <bits/stdc++.h>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

const int N = 2e4 + 10; char s[N], t[N];

void solve()
{
	int T; cin >> T;
	while (T --)
	{
		cin >> s + 1 >> t + 1;
		int l = 1, r = strlen(s + 1);
		while (l < r && s[l] == t[l]) l ++;
		while (l < r && s[r] == t[r]) r --;
		int len = r - l + 1, check = 1;
		for (int i = 0; i < len; i ++) if (s[l + i] != t[r - i]) check = 0;
		if (check) cout << "Y\n"; else cout << "N\n"; 
	}
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve(); 
	
	return 0;
}

2. MC0456 · 斩断灵藤

【题目】MC0456 · 斩断灵藤

【AC_Code】

#include <bits/stdc++.h>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

void solve()
{
	int n, m; cin >> n >> m; vector<vector<int>> c(n);
	for (int i = 0; i < n - 1; i ++)
	{
		int u, v; cin >> u >> v; u --; v --;
		c[u].push_back(v); c[v].push_back(u);
	}
	function<int(int, int)> s; int ans = 0;
	s = [&](int h, int i)
	{
		vector<int> k;
		for (int l : c[h])
		{
			if (l == i) continue;
			int m = s(l, h); k.push_back(m);
		}
		sort(k.begin(), k.end());
		int a = 1;
		for (int p : k)
		{
			if (a + p > m && p > 0) ans ++;
			else if (a + p <= m) a += p;
		}
		return a;
	};
	if (s(0, -1) > 0) ans += (1 * 1);
	cout << ans << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve(); 
	
	return 0;
}

3. MC0457 · 符咒封印

【题目】MC0457 · 符咒封印

【AC_Code】

#include <bits/stdc++.h>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
using ll = long long;

const int N = 5e5 + 10, mod = 998244353;
ll a[N], b[N], c[N], ans;

void solve()
{
	int n, q; cin >> n >> q;
	for (int i = 1; i <= n; i ++)
	{
		cin >> a[i];
		b[i] = (b[i - 1] + a[i]) % mod;
		c[i] = (c[i - 1] + a[i] * i) % mod;
	}
	while (q --)
	{
		int l, r; cin >> l >> r;
		ll x = c[r] - c[l - 1], y = b[r] - b[l - 1], z = (l - 1) * y;
		ans = (x - z) % mod; ans = (ans + mod) % mod; 
		cout << ans << '\n';
	}
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve(); 
	
	return 0;
}

4. MC0458 · 移铁术

【题目】MC0458 · 移铁术

【AC_Code】


5. MC0459 · 昆仑墟

【题目】MC0459 · 昆仑墟

【AC_Code】


6. MC0460 · 星空迷轨阵

【题目】MC0460 · 星空迷轨阵

【AC_Code】


7. MC0461 · 排队

【题目】MC0461 · 排队

【AC_Code】

#include <bits/stdc++.h>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

void solve()
{
	int T; cin >> T;
	while (T --)
	{
		int n; cin >> n; vector<int> a[n + 1]; priority_queue<int> q;
		for (int i = 1; i <= n; i ++)
		{
			int opt; cin >> opt; int x, y;
			if (opt == 1) { cin >> x; y = n - 1; }
			else if (opt == 2) { cin >> y; x = 0; }
			else cin >> x >> y;
			swap(x, y); x = n - x; y = n - y; a[x].push_back(y);
		}
		int ans = 1;
		for (int i = 1; i <= n; i ++)
		{
			for (unsigned j = 0; j < a[i].size(); j ++) q.push(-a[i][j]);
			if (q.empty()) { ans = 0; break; }
			int x = -q.top(); q.pop();
			if (x < i) { ans = 0; break; }
		}
		cout << (ans ? 'Y' : 'N') << '\n';
	}
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve(); 
	
	return 0;
}

8. MC0462 · 最后一难

【题目】MC0462 · 最后一难

【AC_Code】

#include <bits/stdc++.h>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

size_t t = 0; int ans = 0;

void solve()
{
	string s; cin >> s;
	while ((t = s.find("matiji", t)) != string :: npos) { t += 5; ans ++; }
	cout << ans << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve(); 
	
	return 0;
}

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【Air】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值