AtcoderABC311场

news2024/9/29 15:22:18

A - First ABCA - First ABC

在这里插入图片描述在这里插入图片描述

题目大意

需要找到满足条件的最小字符数量。条件是字符串S中出现了A、B和C各至少一次。

思路分析

可以使用一个unordered_set来存储已经出现的字符,每次遍历字符串S时,将字符加入集合中。当集合中的元素数量达到3时,即表示A、B和C都已经出现过,此时记录当前位置i+1,并且退出循环。

时间复杂度

O(N)

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string s;
    cin>>s;
    unordered_set<char> ch; // 用于存储已经出现的字符
    int cnt = 0; // 计数器,记录满足条件的字符数量
    for(int i=0;i<n;i++)
    {
        ch.insert(s[i]); // 将当前字符加入集合ch中
        if(ch.size()==3){ // 检查集合ch的大小是否等于3
            cnt=i+1; // 记录当前位置i+1到计数器cnt中
            break; // 退出循环
        }
    }
    cout<<cnt<<endl; // 输出计数器cnt的值作为结果
    return 0;
}

B - Vacation TogetherB - Vacation Together

在这里插入图片描述在这里插入图片描述

题目大意

题目要求找出一段连续的天数,使得所有人都有空。给定N个人的日程安排,用长度为D的字符串Si表示第i个人的日程安排。如果Si的第j个字符是o,则表示第i个人在第j天有空;如果是x,则表示占用。
需要找出最多能选择的连续天数。如果没有可以选择的天数,则输出0。

思路分析

通过遍历每一天,逐步累加连续空闲的天数,并记录下最大的天数。当遇到有人占用的天数时,可以重新开始计数。这样做可以找到最长的连续空闲天数。

时间复杂度

O(D*N)

AC代码

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n, d;
    cin >> n >> d;

    vector<string> sc(n);
    for (int i = 0; i < n; i++) {
        cin >> sc[i];
    }

    int ma = 0, cu = 0;
    for (int i = 0; i < d; i++) {
        bool fr = true;
        for (int j = 0; j < n; j++) {
            if (sc[j][i] == 'x') {
                fr = false;
                break;
            }
        }
        if (fr) {
            cu++;
            ma = max(ma, cu);
        } else {
            cu = 0;
        }
    }

    cout << ma << endl;
    return 0;
}

C - Find it! C - Find it!

在这里插入图片描述在这里插入图片描述在这里插入图片描述

题目大意

题目要求在给定的有向图中找到一个无重复顶点的有向环。图有N个顶点和N条边。第i条边从顶点i指向顶点Ai.

思路分析

使用DFS,可以从任意一个顶点开始,沿着边进行探索,直到找到一个已经访问过的顶点为止,从而找到一个可能的有向环。然后,再次进行DFS,直到回到起点,以获得无重复顶点的有向环。

时间复杂度

O(N+M)

AC代码

#include <bits/stdc++.h>

using namespace std;

vector<int> g;              // 存储图的连接关系
vector<int> visited;        // 记录顶点是否已访问
vector<int> v;              // 存储有向环中的顶点
int aux = 0, c = 0;         // 辅助变量

// 第一次DFS,找到有向环的起点和终点
void dfs(int i) {
    visited[i]++;

    if (visited[g[i]]) {
        aux = g[i];
    }
    else {
        dfs(g[i]);
    }
}

// 第二次DFS,找到无重复顶点的有向环
void dfs2(int i) {
    c++;
    visited[i]++;
    v.push_back(i);

    if (visited[g[i]] == 1)
        dfs2(g[i]);
}

int main() {
    int n;
    cin >> n;

    g = vector<int>(n);
    visited = vector<int>(n);

    for (int i = 1; i <= n; i++) {
        cin >> g[i];
    }

    dfs(1);     // 从任意一个未访问过的顶点开始进行DFS

    dfs2(aux);  // 从有向环的起点开始再次进行DFS

    cout << c << "\n";
    for (int i = 0; i < c; i++) {
        cout << v[i] << " ";
    }
}

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

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

相关文章

Python元祖及字典小练习

目录 1. 元组 2. 字典 资料获取方法 1. 元组 和list的区别&#xff0c;不能改变元组中的对象&#xff0c;对象里面的值可以修改 元组中包含容器类&#xff08;列表&#xff0c;字典等&#xff09; 如果直接&#xff08;&#xff09;是数学运算&#xff0c; 如果&#xf…

爬虫002_python程序的终端运行_文件运行_ipython的使用---python工作笔记020

用python运行一个文件,就是要写一个.py结尾的文件 然后保存 然后直接cmd中,python 然后写上py文件的路径就可以了 然后看一下内容 看一下终端中运行,直接输入python进入python环境,然后写python代码 回车运行 退出可以用exit()

LiveGBS流媒体平台GB/T28181功能-视频直播流媒体平台分屏展示设备树分组树记录上次分屏播放记录

LiveGBS视频直播流媒体平台分屏展示设备树分组树记录上次分屏播放记录 1、分屏展示1.1、单屏1.2、四分屏1.3、九分屏1.4、十六分屏 2、分屏记录3、搭建GB28181视频直播平台 1、分屏展示 LiveGBS分屏页面支持&#xff0c;多画面播放&#xff0c;支持单屏、四分屏、九分屏、十六…

【无标题】机器学习常识阅读笔记

原博客链接&#xff1a;https://blog.csdn.net/minfanphd/category_12328466.html 总共24篇博客内容&#xff0c;最近两天集种看了一遍。小有收获&#xff0c;了解了一些机器学习的概念。大部分概念原来听过&#xff0c;但是有些概念还是第一次见。比如U-Net&#xff0c;多示例…

使用IDEA打jar包的详细图文教程

1. 点击intellij idea左上角的“File”菜单 -> Project Structure 2. 点击"Artifacts" -> 绿色的"" -> “JAR” -> Empty 3. Name栏填入自定义的名字&#xff0c;Output ditectory 选择 jar 包目标目录&#xff0c;Available Elements 里右击…

vue中预览静态pdf文件

方法 // pdf预览 viewFileCompare() { const pdfUrl "/static/wjbd.pdf"; window.open(pdfUrl); }, // 下载 downloadFile(){ var a document.createElement("a"); a.href "/static/wjbd.pdf"; a.…

王道考研数据结构第二章知识点总结

2.1 线性表的定义和基本操作 2.2.1 顺序表的定义 2.2.1 顺序表的插入删除 注意&#xff1a;插入操作中插入一个元素是从后往前移(从最后一个开始处理)&#xff1b;而删除操作中是从前往后移(从需要删除的后一个开始移)。 2.2.2 顺序表的查找 2.3.1 单链表的定义 2.3.2-1 单链…

CCLINK转profinet网关cclink转modbus

在工业自动化领域&#xff0c;不同品牌的PLC控制系统之间的数据交互是一个重要的问题。比如说&#xff0c;如果我们需要将三菱PLC的数据和西门子PLC的数据进行交互&#xff0c;我们应该如何处理呢&#xff1f;在这方面&#xff0c;捷米的JM-PN-CCLK通讯网关为我们提供了一种解决…

Python中的Cookie模块有什么功能

什么是Cookie Cookie&#xff08;或HTTP Cookie&#xff09;是一小段由Web服务器发送到Web浏览器并保存在用户本地计算机上的数据。它通常用于跟踪和识别用户的会话信息&#xff0c;以提供个性化的用户体验。 Cookie的工作原理 1. 当用户访问一个网站时&#xff0c;服务器会生…

在docker中安装使用达梦数据库

关于在docker中安装达梦数据库&#xff0c;达梦官方网站其实是有提供安装使用方法的&#xff0c;但可能还是有朋友不会&#xff0c;这里将在原文基础上简单扩充下。 注意&#xff1a;docker容器中&#xff0c;数据库安装后没有创建服务的脚本&#xff0c;只有bin、bin2、conf、…

VMWare虚拟机常用操作命令

今日一语&#xff1a;做到所有的细节都不放过&#xff0c;则可以避免99%已知的风险&#xff0c;但大多数都因懒惰而甘愿承受风险&#xff0c;至此悔不当初 查看虚拟机在本机网络的IP ip addr 本地向虚拟机传送文件 scp 文件 rootpath 虚拟机路径 enter后输入密码即可传输&am…

LoRA:大模型下游任务的低秩适应

论文标题&#xff1a;LoRA: Low-Rank Adaptation of Large Language Models 论文链接&#xff1a;https://arxiv.org/abs/2106.09685 论文来源&#xff1a;NVIDIA 一、概述 自然语言处理中的一个重要范式是在通用域数据上进行大规模预训练&#xff0c;然后在特定任务或域上适配…

开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)

目录 文章传送门 一、什么是Bootloader 二、简单的启动程序 三、上板测试 文章传送门 开发一个RISC-V上的操作系统&#xff08;一&#xff09;—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统&#xff08;二&#xff09;—— 系统引导…

SpringBoot中接口幂等性实现方案-自定义注解+Redis+拦截器实现防止订单重复提交

场景 SpringBootRedis自定义注解实现接口防刷(限制不同接口单位时间内最大请求次数)&#xff1a; SpringBootRedis自定义注解实现接口防刷(限制不同接口单位时间内最大请求次数)_redis防刷_霸道流氓气质的博客-CSDN博客 以下接口幂等性的实现方式与上面博客类似&#xff0c;…

实战攻防Demo|如何轻松形成自动响应的安全闭环?

从威胁阻断角度来说&#xff0c;拦住黑客的第一步攻击尤为重要。同样&#xff0c;对于攻击者来说&#xff0c;第一步攻击的成本也往往是最高的。日常工作中人们会遇到很多类型的攻击&#xff0c;但暴力破解或者撞库攻击往往被作为黑客的第一步攻击。这主要源于其技术含量低&…

express编写一个简单的get接口

/01编写get接口.jsconst express require(express) const app express()// 创建路由 const useRouter require(./router/user.js) // 注册路由 app.use(/api,useRouter)app.listen(8080, (req, res) > {console.log(8080监听) }) ./02编写post接口 // 注意&#xff1a;如…

ESP32(MicroPython) 两轮差速五自由度机械臂小车

这次的项目在软件上没多少调整&#xff0c;但本人希望分享一下硬件上的经验。 小车使用两轮差速底盘&#xff0c;驱动轮在小车中间&#xff0c;前后都要万向轮。这种形式可以实现0转弯半径&#xff0c;但受万向轮及用于加高的铜柱的规格限制&#xff0c;两个万向轮难以调到相同…

3ds MAX 洗菜池

在家居中我们显然离不开这个对吧 首先绘制一个长方体作为基础 注意设置长宽高的网格大小&#xff0c;方便后续调整 俯视图网格线如下&#xff1a; 长方形变换为可编辑网络&#xff0c;并在【多边形】界面选择底面的所有多边形&#xff0c;按delete删除&#xff0c;形成一个壳体…

AtcoderABC233场

A - 10yen StampA - 10yen Stamp 题目大意 Takahashi已有X日元邮票&#xff0c;计算出Takahashi至少需要再贴多少个10日元的邮票才能使得信封上的邮票总价值达到Y日元。 思路分析 我们只需要计算Y - X&#xff0c;即Y日元减去X日元的差值。如果该差值大于等于0&#xff0c;则…

MyBatisPlus分页功能实现

MyBatisPlus分页功能实现 1. MyBatisPlus分页使用1.1 设置分页拦截器作为Spring管理的bean1.2 执行分页查询 2. 开启MyBatisPlus日志3. 解决日志打印过多问题3.1 取消初始化spring日志打印3.2 取消SpringBoot启动banner图标3.3 取消MybatisPlus启动banner图标 1. MyBatisPlus分…