Codeforces Round 968 (Div. 2) ABC题详细题解(C++,Python)

news2024/11/15 4:39:11

前言:

        本文为Codeforces Round 968 (Div. 2)的ABC详细题解,包含C++,Python语言描述,觉得有帮助或者写的不错可以点个赞 

        感觉D题说的好抽象,看不懂,之后实力够了更新

目录

题A:

题目大意和解题思路:

代码实现(C++):

代码实现(Python):

题B:

题目大意和解题思路:

代码实现(C++):

代码实现(Python):

题C:

题目大意和解题思路:

代码实现(C++):

代码实现(Python):


题A:

Problem - A - Codeforces

题目大意和解题思路:

题目意思就是说,现在一个字符串,满足下面条件,就是好字符串

  1. k ≥ 2。
  2. s = t1 + t2 + ... + tk,其中 + 表示连接操作。例如,abc = a + bc。
  3. 对于所有的 1 ≤ i < j ≤ k,ti 的第一个字符不等于 tj 的最后一个字符

然后让你确定一个字符串是否是好字符串

脑经急转弯吧, (我感觉弱智题,容易想歪,不敢提交

题目意思就是说,把一个字符串分成至少两份,然后分成的每一份的第一个字符串,不能等于下一份的最后一个字符串

那我直接从下标0 到 1的位置开始分就i可以了,分成两个,然后题目就变成了,第一个不等于最后一个就是好字符串...

代码实现(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int tt;
    std::cin >> tt;
    while (tt--) {
        int n;
        std::cin >> n;

        std::string s;
        std::cin >> s;

        if (s[0] != s[n - 1]) {
            std::cout << "YES" << "\n";
        } else {
            std::cout << "NO" << "\n";
        }
    }
}

代码实现(Python):

def main():
    tt = int(input())
    res = []
    for _ in range(tt):
        n = int(input())
        s = input()
        if s[0] != s[n - 1]:
            res.append("YES")
        else:
            res.append("NO")
    for r in res:
        print(r)

题B:

Problem - B - Codeforces

题目大意和解题思路:

两个人A,B进行游戏,给一个数组吧,然后:

A选择数组中一个数字,然后把这个数字a_i变成 max(a_i, a_(i + 1)),然后移除a_(i + 1)

B选择数组中一个数字,然后把这个数字a_i变成 min(a_i, a_(i + 1)),然后移除a_(i + 1)

当数组中就剩下一个元素的时候停止

A想让数组元素剩下元素尽可能大,B想让数组剩下元素尽可能小

假设他们都是最优的策略,然后让你求最后的一个数字是什么

我觉得这个题目还是有点意思的,题目意思翻译一下就是:

A选择两个相邻的数字然后移除其中的最小值,B就是移除最大值

然后都使用最优策略

最优策略是什么呢?贪心,想让元素尽可能大,那就每次移除最小的元素,反之就是每次移除最大的元素。

那么排序数组

那么移除一个最大,移除一个最小,剩下的最后一个肯定就是数组中间的那个

代码实现(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int tt;
    std::cin >> tt;
    while (tt--) {
        int n;
        std::cin >> n;

        std::vector<int> A(n);
        for (int i = 0; i < n; i++) {
            std::cin >> A[i];
        }
        
        std::sort(A.begin(), A.end());
        std::cout << A[n / 2] << "\n";
    }
}

代码实现(Python):

def main():
    tt = int(input())
    res = []
    for _ in range(tt):
        n = int(input())
        A = list(map(int, input().split()))
        A.sort()
        res.append(A[n // 2])
    for r in res:
        print(r)

题C:

Problem - C - Codeforces

题目大意和解题思路:

Turtle 认为一对整数 (i, j) (1 ≤ i < j ≤ n) 是一个(pleasant pair)存在一个整数 k 满足 i ≤ k < j,并且满足以下两个条件:

  1. sk ≠ sk+1
  2. sk ≠ si 或 sk+1 ≠ sj

此外,Turtle 认为一对整数 (i, j) (1 ≤ i < j ≤ n) 是一个好的对(good pair)当且仅当 si = sj 或者 (i, j) 是一个(pleasant pair)

然后给你一个字符串,变换这个字符串,让好的对数量最大化

题目意思说的好奇怪,只要在[i, j)这个区间内有一对相邻且不相等的数字,然后这对数字的前一个不等于si,后一个不等于sj即可,或者si == sj

我的思路比较猜测,但确实可以ac, 尽可能的使得相邻的字符串不相等就行了,这样每一个长度大于三的区间都可以满足

注意:在 Python 中,字符串是不可变的,每次进行字符串拼接操作时,都会创建一个新的字符串对象,这会导致较高的内存和时间开销,所以放在列表里面再用join

代码实现(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    int tt;
    std::cin >> tt;
    while (tt--) {
        int n;
        std::cin >> n;
        std::string s;
        std::cin >> s;
        std::vector<int> cnt(26, 0);
        for (auto& c : s) {
            cnt[c - 'a']++;
        }
        std::string res = "";
        int cur = 0;
        while (n) {
            if(cnt[cur] != 0) {
                cnt[cur]--;
                res += char(cur + 'a');
                n--;
            }
            cur = (cur + 1) % 26;
        }
        std::cout << res << "\n";
    }
}

代码实现(Python):

def main():
    tt = int(input())
    res = []
    for _ in range(tt):
        n = int(input())
        s = input()
        cnt = [0] * 26
        for c in s:
            cnt[ord(c) - ord('a')] += 1
        out = []
        cur = 0
        while n > 0:
            if cnt[cur] > 0:
                cnt[cur] -= 1
                n -= 1
                out.append(chr(cur + ord('a')))
            cur = (cur + 1) % 26
        res.append(''.join(out[:]))
    for r in res:
        print(r)

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

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

相关文章

全国大学生数学建模大赛——黄花鱼的最优捕捞策略

渔业管理部门规定&#xff0c;每年只允许在产卵孵化期前的8个 月进行捕捞作业。如果每年投入的捕捞能力(如渔船数、下网 次数等)固定不变&#xff0c;这时单位时间捕捞量将与各年龄组鱼群条 数成正比&#xff0c;比例系数不妨设为捕捞强度系数。通常使用 13mm 网眼的拉网&…

中国高校发表科技论文及著作数量数据集(2009-2022年)

中国各地区的高校科技产出数据&#xff0c;包括27个指标&#xff0c;科技论文发表、著作出版、专利申请、专利转让、国家标准项等。这些指标综合反映了各地区高校在科学研究和技术开发方面的活跃程度及创新能力 一、数据介绍 数据名称&#xff1a;中国地区高校发表科技论文、…

Android App启动流程

1.通过 Launcher 启动应用时&#xff0c;点击应用图标后&#xff0c;Launcher 调用 startActivity 启动应用。 2.Launcher Activity 最终调用 Instrumentation 的 execStartActivity 来启动应用。 3.Instrumentation 调用 ActivityManagerProxy (ActivityManagerService 在应…

计算机类-本科毕业设计快速通关攻略-(选题-创新点-论文框架-论文绘图)

一、推荐选题 大多数人都没有什么基础&#xff0c;不推荐做系统类的&#xff0c;建议走深度学习方向&#xff0c;简单易上手&#xff0c;下面将给出几个我认为不错的方向。 1、目标检测类 目标检测是每年深度学习毕业设计的主流&#xff0c;如Faster R-CNN、YOLO、SSD等算法…

程序员心理健康测试问卷

当然&#xff0c;以下是一份针对程序员设计的心理健康测试问卷。这份问卷旨在帮助程序员评估自己的心理健康状态&#xff0c;并识别可能存在的心理问题。请注意&#xff0c;此问卷仅供参考&#xff0c;不能替代专业心理咨询或诊断。 程序员心理健康测试问卷 基本信息 姓名&am…

为什么不让程序员直接对接客户,而是通过产品经理?

从客户的角度来说&#xff0c;客户需要的是对自身业务的解决方案以及实现&#xff0c;即能够实现解决方案的软件或系统。从程序员的角度来讲&#xff0c;甲方说啥&#xff0c;我按着做就行了&#xff0c;即实现甲方说的软件或系统。但是甲方不懂技术&#xff0c;程序员不懂业务…

备忘录删除了怎么恢复?备忘录失而复得,掌握这3招!

备忘录是我们手机中的秘密花园&#xff0c;守护着每一个重要的思绪、待办事项与未来规划。它们不仅是日常工作的得力助手&#xff0c;更是心灵慰藉的小角落。但有时候&#xff0c;一个不经意的滑动或点击&#xff0c;这些珍贵的笔记和计划可能就会消失。备忘录删除了怎么恢复&a…

jpeg转pdf,分享5种图片转PDF的方法!

在日常工作和学习中&#xff0c;将JPEG图片转换为PDF文件是一项常见的需求。无论是为了保持文件的清晰度&#xff0c;还是为了方便分享和打印&#xff0c;JPEG转PDF都是一项非常实用的操作。本文将分享五种不同的JPEG转PDF的方法&#xff0c;帮助大家轻松完成这一任务。 方法一…

百度搜索的RLHF性能优化实践

作者 | 搜索架构部 导读 本文大语言模型在未经标注的大量文本上进行预训练后&#xff0c;可能产生包含偏见、泄露隐私甚至对人类构成威胁的内容。OpenAI 最先提出了基于人类反馈的强化学习算法(Reinforcement Learning fromHuman Feedback, RLHF)&#xff0c;将人类偏好引入到…

五种多目标优化算法(MOAHA、NSGA2、NSGA3、SPEA2、MODA)性能对比,包含47个多目标测试函数,6种评价指标,MATLAB代码

一、五种多目标算法及六种评价指标简介 NSGA-III&#xff1a; NSGA-III是Deb在2013年提出的&#xff0c;用于解决高维多目标优化问题。它采用参考点基于的非支配排序方法&#xff0c;并引入了种群的自适应标准化和关联操作&#xff0c;以提高算法在高维问题上的性能和多样性 。…

线程 --- 同步与生产消费者模型

序言 在上一篇的内容中&#xff0c;我们学习了使用互斥锁来保护共享资源&#xff0c;避免多个线程竞争&#xff0c;造成数据不一致等问题。在这一篇文章中&#xff0c;我们将继续深入&#xff0c;学习多线程同步以及生产消费者模型。 1. 线程同步 1.1 什么是线程同步 线程互斥…

操作系统常见面试题总结

文章目录 1 操作系统基础1.1 什么是操作系统&#xff1f;1.2 操作系统主要有哪些功能&#xff1f;1.3 用户态和内核态1.3.1 什么是用户态和内核态&#xff1f;1.3.2 为什么要有用户态和内核态&#xff1f;只有一个内核态不行么&#xff1f;1.3.3 用户态和内核态是如何切换的&am…

HICOOL 2024全球创业大赛角出200个获奖项目

近日&#xff0c;经过超过200天的紧张竞争&#xff0c;HICOOL 2024全球创业大赛从124个国家和地区的7406个创新项目中脱颖而出&#xff0c;共选出了200个获奖项目。 其中&#xff0c;“新一代智能光学显微成像仪器与全流程解决方案”和“基于多尺度深度学习的功能型生物分子设…

Excel下拉框多选

记录一下学会一个新的知识&#xff01; 两种方式 第一种方式&#xff1a;先在表格里写好需要的值&#xff0c;再在数据关联里面直接引入。 1.新建excel表格&#xff0c;输入下拉框需要的值。 2.点击——数据>有效性 3.选择——序列 4.数据来源——框住刚才写好的数据——…

IMU用于动物行为监测

近日&#xff0c;由比利时和法国组成的科研团队开展了一项创行性的研究&#xff0c;通过在牛颈部安装IMU&#xff08;惯性测量单元&#xff09;&#xff0c;实现了对牛吃草行为的实时监测。该技术通过捕捉牛咀嚼时的微小动作&#xff0c;并结合机器学习算法&#xff0c;智能区分…

07--kubernetes.deploy与service

前言&#xff1a;这一章主要是deploy与service的配置及其原理&#xff0c;以及一些细节上的补充&#xff0c;同时还会附上镜像拉取策略和容器健康检查的一些操作实例&#xff0c;内容比较多&#xff0c;建议根据目录查看。 1、镜像拉取策略 IfNotPresent:在镜像已经存在的情况…

新迪天工®看图,专业的三维CAD看图工具

替代专业CAD软件&#xff0c;方便查看各种三维和二维CAD图纸 新迪天工看图是一款功能强大的三维模型和二维图纸查看工具&#xff0c;能帮助制造企业以较低的成本、较高的数据安全性实现产品设计数据的跨业务浏览和交互。 应用场景 1、设计图纸评审 可直接对三维模型和二维…

【MATLAB源码-第255期】基于matlab的长鼻浣熊优化算法(COA)无人机三维路径规划,输出做短路径图和适应度曲线.

操作环境&#xff1a; MATLAB 2022a 1、算法描述 长鼻浣熊优化算法&#xff08;Coati Optimization Algorithm&#xff0c;COA&#xff09;是一种新兴的群体智能优化算法&#xff0c;其灵感来源于长鼻浣熊在自然界中的觅食行为。长鼻浣熊是一种生活在美洲热带和亚热带森林中…

Redis中的数据类型及应用场景(面试版)

五种常用数据类型介绍 Redis中存储的都是key-value对结构的数据&#xff0c;其中key都是字符串类型&#xff0c;value有5种常用的数据类型&#xff1a; 字符串 string 哈希 hash 列表 list 集合 set 有序集合 sorted set / zset 各种数据类型特点 解释说明&#xff1a; …

DP10RF001支持200MHz~960MHz(G)FSK/OOK调制无线抄表工业传感无线遥控

简介 DP10RF001是一款工作于 200MHz~960MHz 范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器&#xff0c;只需配备简单、低成本的外围器件就可以获得良好的收发性能。 芯片支持灵活可设的数据包格式…