2025.3.22 Codeforces Round 1011 (Div. 2)

比赛链接

Solved: 5/7

Rank(trusted): 15

Rank(all): 46


A. Serval and String Theory

题意:给一个字符串,可以交换两个字符至多 \(k\) 次,问能否使它的字典序严格大于它的反串的字典序。

如果已经满足条件,直接输出 YES 即可;如果所有字符相等,直接输出 NO 即可。其他情况只需交换一次。

bool solve(){int n, k; cin >> n >> k;string a; cin >> a;bool flag = 0;for (int i=0; i<n; ++i){if (a[i] != a[0]) flag = 1;}if (!flag) return 0;for (int i=0; i<n-i-1; ++i){if (a[i] < a[n-i-1]) return 1;if (a[i] > a[n-i-1]){if (k) return 1;else return 0;}}if (k) return 1;else return 0;
}

B. Serval and Final MEX

题意:给一个序列,每次可选择一个长度 \(>1\) 的连续子序列将其替换为 mex,问能否将整个序列变成只有一个 0。给出操作方案(不要求操作数最少)。序列长度 \(\geq 4\)(这保证了有解)。

将序列每两个数分成一组(若长度为奇数则最后三个分成一组),如果组内有 0 则取 mex,组内没有 0 则不变。这样做完一轮操作后序列所有数都不为 0。此时再对整个序列取 mex 即可。

void solve(){int n, m=0; cin >> n;vector<int> a(n); cin >> a;vector<pii> ans;for (int i=0; i<n-1; i+=2){if (i != n-3){if (!a[i] || !a[i+1]) ans.push_back(pii(i-m,i+1-m)), ++m;}else{if (!a[i] || !a[i+1] || !a[i+2]) ans.push_back(pii(i-m,i+2-m)), m+=2;}}ans.push_back(pii(0,n-m-1));cout << ans.size() << '\n';for (int i=0; i<ans.size(); ++i) cout << ans[i].first+1 << ' ' <<ans[i].second+1 << "\n";
}

C. Serval and The Formula

题意:给两个数 \(x,y\),找 \(k>0\) 使得 \((x+k)\oplus (y+k) = (x+k) + (y+k)\)

实际上就是让 \(x+k\)\(y+k\) 的二进制表示中不出现对应都等于 1 的位。不妨设 \(x>y\),只需令 \(x\) 变为大于 \(x\) 且最小的 \(2\) 的幂次即可。此时 \(x\) 的最高位是 1 后面是 0,\(y\) 的位数小于 \(x\),必然满足条件。

void solve(){ll x, y; cin >> x >> y;if (x == y){cout << "-1\n";return;}if (x<y) swap(x, y);cout << (1ll << (__lg(x) + 1)) - x << "\n";
}

D. Serval and Kaitenzushi Buffet

题意:有 \(n\) 个物品,第 \(i\) 个物品的价值是 \(d_i\),这些物品会依次到来。每次你可以选择拿走这个物品并令 \(r\leftarrow r+k\),也可以不拿这个物品并令 \(r\leftarrow \max\{0,r-1\}\)。需要保证最后 \(r=0\)。求拿走的物品的价值之和的最大值。

从后往前考虑,则问题变成不拿物品可以让 \(r\) 加一,拿一个物品可以让 \(k\)\(k\) 但不能减到负数。此外还可以无条件用前面的物品替换后面的物品。用一个堆来维护这个过程。

void solve(){int n, k; cin >> n >> k;vector <int> a(n); cin >> a;int r = 0;ll ans = 0;priority_queue <int> pq;for (int i=n-1; i>=0; --i){if (r >= k){pq.push(-a[i]);ans += a[i];r -= k;}else if (!pq.empty() && -pq.top() < a[i]){pq.push(-a[i]);ans += a[i] + pq.top();pq.pop();++r;}else ++r;}cout << ans << "\n";
}

E. Serval and Modulo

题意:给两个序列 \(a\)\(b\),已知 \(b\)\(a\) 的每个元素模 \(k\) 再随机打乱得到的,求一个合法的 \(k\)

注意到随机打乱后总和是不变的,而 \(k\) 一定是 \(S = \sum a_i - \sum b_i\) 的因子,所以枚举 \(S\) 的全部因子暴力检查即可。注意判无解。

ll solve(){int n, m=0; cin >> n;vector <int> a(n), b(n);cin >> a >> b;sort(all(a)), sort(all(b));ll sum = 0;for (int i=0; i<n; ++i){if (a[i] < b[i]) return -1;sum += a[i]-b[i];m = max(m, b[i]);}if (!sum) return m+1;vector<int> c(n);auto check = [&](ll u) -> bool{for (int i=0; i<n; ++i) c[i] = a[i] % u;sort(all(c));for (int i=0; i<n; ++i) if (c[i] != b[i]) return 0;return 1;};for (ll i=1; i*i<=sum; ++i) if (!(sum%i)){if (i > m && check(i)) return i;if (sum/i > m && check(sum/i)) return sum/i;}return -1;
}

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

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

相关文章

第四周第三章3.1—3.5

3.1 initial_weight = 50 print("年份\t地球体重(kg)\t月球体重(kg)") for year in range(1, 11): earth_weight = initial_weight + (year - 1) * 0.5 moon_weight = earth_weight * 0.165 print(f"{year}\t\t{earth_weight:.2f}\t\t{moon_weight:.2f}")3…

PolarCTF网络安全2025春季个人挑战赛 WRITE UP

1-1 可老师签到 本题思路如下: 提示“发送的内容为双写字符串拼接”公众号发送flagflag即可1-2 find 本题思路如下: 把表格文件当压缩包解压,找到flag.xlsx\xl\worksheets\sheet1.xml 发现里面存了数据,于是考虑把数据格子上色以得到flag 先将xml文件处理以获得纯数据代码:…

Go红队开发—CLI框架(一)

CLI命令行工具编写基础学习(一)。CLI开发框架 命令行工具开发,主要是介绍开发用到的包,集成了一个框架,只要学会了基本每个人都能开发安全工具了。 该文章先学flags包,是比较经典的一个包,相比后面要学习的集成框架这个比较自由比较细化点,自定义可能高一些,后续会学到一…

WSL2安装Ubuntu

本文是介绍如何使用任意一台Windows主机借助WSL2创建Ubuntu虚拟系统并开放局域网内SSH连接的操作指南!先决条件拥有能够访问github.com的网络环境; 必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11版本;安装WSL2 以管理员身份运行Powe…

人工‘够好就行’智能(AGEI)就快来了!

比尔弗兰克斯 前言:本文作者的观点是在真正的通用人工智能(AGI)到来之前,一种“够好就行”的人工智能(AGEI)就已经足以引发我们原本担心 AGI 才会带来的重大社会变革、正面效益,甚至潜在危机。 换句话说: AI 不需要达到像人类一样全面智能的程度; 只要在足够多的任务上…

List集合--java进阶day09

1.List集合以下面的例子来解释存储有序和存储重复如上图,我们是怎么添加这些字符串的,打印的时候就是按照这个顺序打印的--存取有序 并且“张三”出现了两次,也存入了两次--存储重复 因为List有索引,所以该接口有关于索引的独特的api..1.remove注意事项 List有两个remove方…

Pydantic字段级校验:解锁@validator的12种应用

title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: Pydantic校验系统支持通过pre验证器实现原始数据预处理,在类型转换前完成字符清洗等操作。格式验证涵盖正则表达式匹配与枚举值约束,确保护照编号等字…

20244126 2024-2025-2 《python程序设计》实验一报告

课程:《Python程序设计》 班级:2441 姓名:马晓霞 学号:20244126 实验教师:王志强 实验日期:2025年3月23日 必修/选修:公选课 (一)实验内容 1.熟悉Python开发环境 2.练习Python运行,调试技能 3.编写技能,练习变量和类型、字符串、对象、缩进和注释等 4.编写一个猜数字…

1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!

Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开…

leetcode每日一题:判断一个括号字符串是否有效

题目 一个括号字符串是只由 ( 和 ) 组成的 非空 字符串。如果一个字符串满足下面 任意 一个条件,那么它就是有效的:字符串为 (). 它可以表示为 AB(A 与 B 连接),其中A 和 B 都是有效括号字符串。 它可以表示为 (A) ,其中 A 是一个有效括号字符串。给你一个括号字符串 s 和…

实验2c语言分支与循环基础应用编程

任务一:1 #include <stdio.h>2 #include <stdlib.h>3 #include <time.h>4 5 #define N 56 7 int main() {8 int number;9 int i; 10 11 srand(time(0)); // 以当前系统时间作为随机种子 12 for(i = 0; i < N; ++i) { 13 nu…

矿用人员违规闯入监控报警系统

矿用人员违规闯入监控报警系统,设置警戒预警功能,巷道正在行车时,当有行人闯入时,及时抓拍、识别现场违章入侵人员同时闪光警示和音箱报警提示禁止进入,在绞车运行期间人员误入斜巷能够及时报警,自动停止绞车运行。该系统做到绞车运行和行人的安全隔离,有力保障了煤矿斜…