Codeforces Global Round 30 (Div. 1 + Div. 2)

news/2025/11/7 2:02:58/文章来源:https://www.cnblogs.com/maburb/p/19198189

A. Sequence Game

题意:一个数组\(a\),每次选择两个相邻的数,用它们之间的一个值替换它们两个。求最后能不能使得留下的数是\(x\)

如果\(\min(a) \leq x \leq \max(a)\)则可行。
最小值和最大值和别人操作时可以留下自己,然后让这两个值最后一起操作。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int x;std::cin >> x;if (x <= std::ranges::max(a) && x >= std::ranges::min(a)) {std::cout << "YES\n";} else {std::cout << "NO\n";}
}int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int t = 1;std::cin >> t;while (t -- ) {solve();}return 0;
}

B. Even Modulo Pair

题意:给你一个严格递增的序列,求有没有两个数\(x, y\)满足\(y \mod x\)是偶数。其中\(y > x\)

如果至少有两个偶数,那么偶数模偶数是偶数。
否则考虑一堆奇数的情况,如果\(a_i\)\(a_{i-1}\)是奇数,设\(a_i = qa_{i-1} + r\),其中\(r\)是奇数,那么\(q\)是偶数,否则奇数乘奇数加奇数会是一个偶数。也就是说\(a_i > 2a_{i-1}\)
那么当\(n\)很大时,必然有解,且直接双层循环暴力很快就能找到解。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int even = -1;int last = -1;for (int i = 0; i < n; ++ i) {if (a[i] % 2 == 0) {if (even != -1) {std::cout << even << " " << a[i] << "\n";return;} else {even = a[i];for (int j = 0; j < i; ++ j) {if (a[i] % a[j] % 2 == 0) {std::cout << a[j] << " " << a[i] << "\n";return;}}}} else {for (int j = i + 1; j < n; ++ j) {if (a[j] % a[i] % 2 == 0) {std::cout << a[i] << " " << a[j] << "\n";return;}}}}std::cout << -1 << "\n";
}int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int t = 1;std::cin >> t;while (t -- ) {solve();}return 0;
}

C. Dungeon

题意:有\(n\)把剑,每把攻击力为\(a_i\)。有\(m\)个怪物,两个属性\(b_i, c_i\)。如果你用\(i\)这把剑攻击\(j\)这个怪物,需要满足\(a_i \geq b_j\)才可以。且当\(c_j > 0\)时,\(a_i\)会变成\(\max(a_i, c_j)\),否则第\(i\)把剑不能再用。每个怪物也只能杀一次。求最多杀几个。

考虑把\(c_i = 0\)的怪物留到最后杀。
我们希望尽可能提高剑的攻击力,那么可以把剑从小到大排序,怪物按\(b_i\)也从小到大排序,每次选一个大于等于\(b_i\)最小的剑出来,其它更小的剑可以留着杀\(c_i = 0\)的怪物。那么每次最小的剑可能变大,相当于用一个大剑换了一个小剑。最后把所有剑从小到大贪心攻击\(c_i = 0\)的怪物就行。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n, m;std::cin >> n >> m;std::vector<int> a(n), b(m), c(m);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}for (int i = 0; i < m; ++ i) {std::cin >> b[i];}std::vector<std::pair<int, int>> d(m);for (int i = 0; i < m; ++ i) {std::cin >> c[i];d[i] = {b[i], c[i]};}std::ranges::sort(d);std::multiset<int> s(a.begin(), a.end());int ans = 0;std::vector<int> e;std::multiset<int> s1;for (auto & [x, y] : d) {while (s.size() && *s.begin() < x) {s1.insert(*s.begin());s.erase(s.begin());}if (s.size()) {auto it = s.begin();int v = *it;if (y != 0) {++ ans;s.erase(it);v = std::max(v, y);s.insert(v);} else {e.push_back(x);}} else {break;}}s.insert(s1.begin(), s1.end());for (auto & x : e) {while (s.size() && *s.begin() < x) {s.erase(s.begin());}if (s.size()) {++ ans;s.erase(s.begin());} else {break;}}std::cout << ans << "\n";
}int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int t = 1;std::cin >> t;while (t -- ) {solve();}return 0;
}

D. Copy String

题意:两个字符串\(s, t\),你想要把\(s\)变成\(t\)。每一轮操作力,你可以让\(s'_i = s_i\)\(s_{i-1}\)。然后\(s = s'\)。求最小操作数和方案。如果最小操作数大于\(k_max\)输出\(-1\)

显然操作只能把前面的字符蔓延到后面。我们可以从后往前看,每次找\(s_j = t_i\)的最后的\(j\),这个\(j\)不能超过后面选择的位置。
具体说,我们记录一个\(last\),表示\(t_{i+1}\)选择的位置,那么我们需要移动\(i+1 - last\)步把\(s_last\)处的字符蔓延到\(t_{i+1}\)。这个过程肯定会覆盖\(t_i\)一次。所以\(t_i\)选择的位置必须小于等于\(last\)。如果没有这样的位置无解。
然后我们可以按照每个位置选择的位置,每次操作中把还没到位的往后移就行。操作数就是最远的两个位置。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n, K;std::cin >> n >> K;std::string s, t;std::cin >> s >> t;if (s[0] != t[0]) {std::cout << -1 << "\n";return;}std::array<std::vector<int>, 26> pos;std::vector<int> p(n), d(n);int k = 0;for (int i = 0; i < n; ++ i) {pos[s[i] - 'a'].push_back(i);}int last = n;for (int i = n - 1; i >= 0; -- i) {auto it = std::ranges::upper_bound(pos[t[i] - 'a'], std::min(i, last));if (it == pos[t[i] - 'a'].begin()) {std::cout << -1 << "\n";return;}-- it;p[i] = *it;d[i] = i - p[i];last = std::min(last, p[i]);k = std::max(k, d[i]);}if (k > K) {std::cout << -1 << "\n";return;}std::cout << k << "\n";for (int i = 1; i <= k; ++ i) {std::string ns = s;for (int j = 1; j < n; ++ j) {if (d[j] >= i) {ns[j] = s[j - 1];}}std::cout << ns << "\n";s = ns;}
}int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int t = 1;std::cin >> t;while (t -- ) {solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

价值权衡的完整计算模型:价值体系与规则体系的辩证统一

价值权衡的完整计算模型:价值体系与规则体系的辩证统一 摘要:本文提出一个面向人工智能价值权衡的完整计算模型,旨在解决传统"价值对齐"范式的理论局限。该模型以"共识原语"为基本单元,通过&q…

试试用 MiniMax Agent 做一个介绍 JSON 格式化网站的页面

试试用 MiniMax Agent 做一个介绍 JSON 格式化网站的页面今天尝试用 MiniMax Agent 做了一个简单的网页,效果看起来还不错:JSON Formatter Online - 专业的在线JSON格式化工具 具体使用的对话内容可以直接看这里:ht…

【esp32 学习笔记】采用 millis() 函数的非阻塞循环的写法

在ESP32的循环中,为了避免使用 delay(100) 等阻塞循环,经常采用以下三段式的写法: void loop() {audio.loop(); // 必须频繁调用unsigned long currentMillis = millis();// 使用millis()检查是否到了执行时间,而不…

USSD 代码

简介 USSD(Unstructured Supplementary Service Data,非结构化补充业务数据)是 GSM 网络提供的一种实时交互式命令通道。形式:以 * 和 # 组成,如 *#06#、*#100#、*123#。 通信方式:与运营商核心网直接交互,非短…

【ESP32 进阶】非阻塞循环的写法

在ESP32的循环中,为了避免使用 delay(100) 等阻塞循环,经常采用以下三段式的写法: void loop() {audio.loop(); // 必须频繁调用unsigned long currentMillis = millis();// 使用millis()检查是否到了执行时间,而不…

2025年11月脸部泛红产品推荐榜:泛红舒缓精华实测排名

换季、熬夜、频繁刷酸或长期佩戴口罩,都会让屏障脆弱的脸颊出现“红绿灯式”泛红,伴随灼热、刺痒甚至脱屑。对敏感肌人群而言,选错产品可能让刺激叠加,选对产品则能在数分钟内把不适感“压下去”,并持续加固屏障。…

2025年11月脸部泛红产品推荐榜:屏障修护精华对比榜单

换季、熬夜、刷酸、频繁戴口罩,都让“脸一热就红”成为越来越多人的日常。后台留言里,高频出现的词是“泛红反复”“护肤品越用越刺激”“想遮又遮不住”。泛红不仅是外观困扰,更伴随灼热、紧绷、瘙痒,影响工作社交…

2025年11月进度管理工具评价榜:行业数据与用户反馈全解析

在当今快节奏的工作环境中,进度管理工具已成为企业提升效率的关键支撑。随着远程办公模式的普及和项目复杂度的提升,越来越多的团队管理者、项目经理以及个人工作者开始寻求专业的进度管理解决方案。这类用户通常面临…

2025年11月北京房产纠纷律师排名分析:客观评价与实务参考

在北京这座超一线城市,房产纠纷往往涉及重大利益且法律关系复杂。选择一位专业对口的律师成为许多当事人的迫切需求。根据行业白皮书显示,北京房产纠纷案件年增长率持续保持在10%以上,案件类型涵盖商品房买卖、遗产…

2025年11月黄黑皮美白产品对比榜:从成分到肤感十款实测排名

每到秋冬,肤色偏黄偏黑的消费者最常搜索的疑问是“有没有不刺激、不反黑、真正能提亮的美白产品”。在2025年11月的护肤市场上,国家药监局最新发布的《化妆品美白淡斑功效监测报告》显示,持“美白特证”的新品数量同…

2025年11月学生平板品牌推荐:护眼大屏榜对比学习场景差异

开学季刚过,期中临近,家长群里讨论最热烈的不再是补习班,而是“到底该给孩子换哪台学习平板”。用户画像很清晰:城市普通家庭,孩子就读小学高年级到高中,家长时间碎片化,无法每天陪读;校内进度快、新课改题型新…

2025年11月学生平板品牌评测榜:从双师1对1到全科AI精准学横向对比

开学不到两个月,家长群里“作业又写到十点”的吐槽此起彼伏。新课标落地后,预习、复习、错题整理全部升级,传统纸质教辅跟不上节奏,手机又怕孩子偷玩,一台能把“清北老师+AI诊断+同步教材”同时装进口袋的学生平板…

2025年11月智能学习机品牌推荐:AI精准学榜多维评测

孩子放学回家,作业堆成山,家长却抽不出时间辅导;新课标变化快,旧资料跟不上;网课眼花缭乱,不知哪一套才真正同步校内。这些场景让“智能学习机”成为2025年秋季家庭教育搜索热度最高的关键词之一。教育部《2024全…

2025年11月智能学习机品牌对比榜:新课标同步与护眼大屏机型排名

正在为孩子挑学习机的家长,往往陷入“硬件堆料”与“内容空洞”的两难:新课标年年更新,校外辅导收紧,校内同步资源却分散;孩子用眼强度大,又离不开屏幕;家长时间碎片,难以随时答疑。教育部《2024全国中小学生学…

2025年11月学生平板品牌推荐:新课标榜排行六合一功能解析

开学才两个月,不少家长已经发现孩子的作业量陡增,课本难度升级,自己辅导力不从心。晚上十点,家长群还在讨论“到底要不要买学习机”,关键词集中在“同步教材”“护眼大屏”“能不能真的提分”。教育部2024年发布的…

2025年11月智能学习机品牌推荐:市场热销榜排行全透视

孩子放学回家,作业堆积、错题反复、家长辅导时间碎片化,这是多数家庭的共同场景。新课标落地后,教材更新节奏加快,校内讲解与考试难度之间的落差让“同步+拔高”成为刚需。家长普遍希望有一台设备,既能替代自己陪…

2025年11月智能学习机品牌推荐:护眼大屏榜与用户评价排行

期中刚过,家长群里又开始新一轮“选机焦虑”:孩子作业量陡增,错题反复错,自己辅导力不从心;线下机构路程远、时间碎,新课标又强调“核心素养”,单纯刷题已难提分。教育部《2024全国中小学生学习负担监测》显示,…

2025年11月学习机品牌推荐榜:AI精准学机型口碑对比评测

孩子放学回家,作业堆积、新课标知识点更新快,家长辅导力不从心,这是不少家庭每晚的真实场景。教育部2024年公开数据显示,全国义务教育阶段在校生约1.58亿,其中七成家长表示“难以系统辅导同步课程”,由此催生学习…

2025年11月卖得好的学习机品牌推荐:AI学习机榜横向评测

“双减”之后,家庭对校内学情查漏补缺的需求陡增,家长普遍面临三大痛点:一是教材版本差异大,同步资源难找;二是孩子自律弱,设备容易沦为游戏机;三是市面产品概念多,真假AI难辨。2025年秋季学期过半,期中数据暴…

2025年11月干皮精华产品推荐榜:五款干敏肌适用精华排行

秋风一起,干皮人群最先感知:洗完脸紧绷、上妆卡粉、下午起屑,夜间甚至伴随刺痒。皮肤科门诊数据显示,11月因“干燥伴敏感”就诊量较夏季上升约四成,其中七成用户自述“用过保湿霜仍无效”。原因在于,普通保湿仅停…