oj赛(双周赛第二十次)

目录

碰碰车

小码哥与机器人

小码哥的跳棋游戏

竖直打印机

排队

邮箱地址


碰碰车


难度:钻石 占用内存:128 M时间限制:1秒
游乐园玩碰碰车,其中有一种碰碰车是在一条直线上行驶。该碰碰车有一个初始朝向和初始位置,并且以每秒一个单位的速度向初始方向前行,当它和其它碰碰车相遇时,它们会立刻掉头(由于速度很快,掉头时间可以忽略)。你可以算出它们在t秒后的位置吗?

//
// Created by abner on 2024/1/31.
//
#include <bits/stdc++.h>
using namespace std;

struct CAR{
int ID;
int x;
int f;
}car[1010];

    bool cmp1(CAR a,CAR b){return a.x <= b.x;}
    bool cmp2(CAR a,CAR b){return a.ID <b.ID;}
    int n,t,tmp[1010];

    int main(){
        cin>>n >>t;
        for(int i=0;i<n;i++){
        cin >> car[i].x >>car[i].f;
        car[i].ID = i+1;
    }
    sort(car,car +n,cmp1);
    for (int i=0;i<n;i++) {
        tmp[i] = car[i].ID;
        car[i].x = car[i].x + car[i].f * t;
    }
        sort(car,car +n,cmp1);
        for (int i=0;i<n;i++){
            car[i].ID =tmp [i];
            if (i<n-1&&car[i].x == car[i+1].x ||
                i>0 && car[i].x == car[i-1].x)
            car[i].f =0;
        }
        sort(car,car + n,cmp2);
        for (int i=0;i<n;i++,puts("")){
            cout << car[i].x<<" "<<car[i].f;
        }
        return 0;
    }

小码哥与机器人


难度:黄金时间限制:1秒四 占用内存:128 M
小码哥新买了一个机器人,但是这个机器人因为很便宜只能做三个动作
三个动作:前进FD,倒退BK和重复REPEAT。
FD后加数字表示前进多少步;
BK后加数字表示后退多少步;
REPEAT 后加数字再加方括号,表示重复方括号里的命令
三个动作加的数字均为正整数。
命令的格式:
1.FD与BK命令组合:
2.REPEAT 命令内加REPEAT命令与FD、BK组合,且REPEAT排在最后。

//
// Created by abner on 2024/1/31.
//
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll solve(){
    string s;
    char c,k;
    ll n,ans =0;
    while (cin >> c){
        if(c== ']')
        break;
        cin >>s >> n;
        if (c =='R') {
            cin >> k;
            ans += n * solve();
        }
        if (c=='B')
        ans -= n;
        if (c=='F')
        ans += n;
    }
    return ans;
}
int main() {
    cout << abs(solve());
    return 0;
}

小码哥的跳棋游戏


少难度:黄金 时间限制:1秒巴:占用内存:128 M
小码哥喜爱跳棋。跳棋游戏在一条直线上,一共几个位置(1~n),每个位置有2个状态:0表示没有棋子,1表示有棋子。小码哥的棋子自然是能通过没有棋子的位置。当面前有1个棋子时,小码哥可以直接跳过。当有两个及以上棋子连在一起时,小码哥的棋子是跳不过去的。这时候,就要花费能量,破坏掉一些棋子,才能跳过。已知破坏一枚棋子需要花费一点能量。小码哥的棋子从第0个位置出发,现在要求小码哥到达终点(第几个位置)至少需要花费多少能量?
格式
输入格式:第1行包含一个正整数n;
第2行 n 个整数 ai,表示棋盘的状态。

//
// Created by abner on 2024/1/31.
//
#include <bits/stdc++.h>
using namespace std;
int n,a[100005],ans;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i < n; i++)
        if (a[i] && a[i + 1]) {
            a[i + 1] = 0;
            ans++;
        }
    ans += a[n];
    cout << ans << endl;
    return 0;
}

竖直打印机


难度:黄金时间限制:1秒四 占用内存:256 M
小码哥买了一台很神奇的打印机,它能竖直地打印单词,给一个字符串,他能按单词出现的顺序竖直返回单词。
单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)
必要时以空格补位指的是;在竖直打印单词过程中,若出现中间的单词长度小于相邻两个单词长度,会有某行该单词没有字母的情况,这时用空格补位。
输出尾部空格的删除指的是:输出最后一行的末尾没有空格,
现要求你按照要求复制一个打印机。

//
// Created by abner on 2024/1/31.
//
#include <bits/stdc++.h>
using namespace std;
struct NODE{
    string str;
    int len;
};
int main(){
    vector<NODE>aa;
    int maxn = 0,cnt =0;
    string tmp;
    while (cin >> tmp) {
        int len = tmp.length();
        maxn = max(maxn, len);
        aa.push_back({tmp, len});
        cnt++;
    }
        for(int i = 0;i<maxn;i++) {
            string tmp = "";
            for (int j = 0; j < cnt; j++) {
                if (aa[j].len >= i + 1)
                    tmp += aa[j].str[i];
                else
                    tmp += " ";
            }
            cout << tmp << endl;
        }
                return 0;
    }

排队


 时间限制:1秒难度:黄金巴: 占用内存:128 M
课间休息做游戏,要求男孩们和女孩们排成一队,最初按照加入队伍的顺序排。然而,过了一会儿。站在女孩们前面的男孩们开始感到造尬,下一秒,他们会让身后的女孩站到自己前面。
让我们更精确地描述这个过程。假设队列中的位置由1到n的整数顺序编号,我们对位置号1中的人首先进行操作。如果在时间X,男孩站在第i个位置,女孩站在第+1个位置,然后下一秒,男孩女孩的位置会交换,也就是此时第个是女孩,第i+1个是男孩。时间是以秒为单位给出的。你现在知道孩子们的初始位置。确定队列在 工秒之后的排列方式。
格式
输入格式:第一行包含两个整数”和t,表示队列中的人数和队列将转换成需要查找的排列的时间:下一行输入一个字符串8,s仅由B和G 构成(B表示男孩,G表示女孩)。
输出格式:一个字符串,表示最后的队列。

//
// Created by abner on 2024/1/31.
//
#include <bits/stdc++.h>
using namespace std;
int n,t;
string s;

int main(){
    cin >>n >>t;
    cin >> s;
    while (t--){
        for (int i=0;i<n-1;i++){
            if(s[i] == 'B' && s[i+1] == 'G'){
                swap(s[i],s[i+1]);
                i++;
            }
        }
    }
    cout <<s;
    return 0;
}

邮箱地址


多 难度:钻石时间限制:1秒巴:占用内存:128 M
-个地址由<username>@<hostname>[/resource]组成。
其中username 和hostname之间只允许有一个 @;尖括号<>内包含的为必选项,方括号[]内包含的为可选项。如果 /出现,则必须跟有resource字段。各字段要求如下:
1.username 字段允许大写、小写字母,数字、下划线,其长度应在1到16。2.hostname 字段类似网址,允许用一个或多个。来分割,但不允许连续两个。连在一起。同时,hostname不允许以 。开头或结束。每一段的要求同username字段,分隔出的每一部分长度在1到16,hostname字段的总长度在1到32。
3.resource 字段要求同username 字段,不限制长度。
现给出一个地址,请判断是否合法。
格式
输入格式:一行,一个字符串,表示一个地址(保证地址的字符的ASCI在33到127间),地址长度不超过1000字符
输出格式:一行,如果合法输出YES,否则输出NO。

//
// Created by abner on 2024/1/31.
//
#include <bits/stdc++.h>
using namespace std;
string s,u,h,r;

bool check(char ch){
    if ((ch >='A' && ch <='Z' || ch >='a' && ch<='z'||
    ch >= '0' && ch<= '9' || ch=='_'))
    return true;
    else
    return false;
}
bool username() {
    int l = u.size();
    if (l == 0 || l > 16)
        return false;
    for (int i = 0; i < l; i++) {
        if (!check(u[i]))
            return false;
    }
    return true;
}
        bool hostname(){
            int l = h.size();
            if(h[0]== '.'|| l== 0 || l>32 || h[l-1] == '.')
                return false;
            for(int i = 1; i<l-2;i++) {//检查连续两个.的情况
                if (h[i] == '.' && h[i + 1] == '.')
                    return false;
            }
            int sum = 0;
            for (int i=0;i<l;i++) {
                if (h[i] != '.' && !check(h[i]))//判断字符是否符合要求
                    return false;
                if (h[i] = ',')//以下为判断每一段长度是否在16以内
                    sum++;
                else {
                    if (sum > 16)
                        return false;
                    sum = 0;
                }
            }
            if(sum>16)
                return false;
            return true;
        }

bool resource(){
    int l = r.size();
    if(l == 0)
        return false;
    for (int i=0;i<l;i++){
        if (!check(r[i]))
            return false;
    }
    return true;
}
int main() {
    int p1, p2;
    cin >> s;
    p1 = s.find('@'), p2 = s.find('/');
    if (p1 == string::npos) {//判断没有@的情况
        cout << "NO";
        return 0;
    }
    u = s.substr(0, p1);
//username!赋值
    if (p2 == string::npos)//根据有没有/来给hostname!赋值
        h = s.substr(p1 + 1);
    else
        h = s.substr(p1 + 1, p2 - (p1 + 1));
    if (p2 != string::npos) {//如果存在/,判断resource,是否合法
        r = s.substr(p2 + 1);
        if (!resource()) {
            cout << "NO";
            return 0;
        }
    }
    if (username() && hostname())
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络原理-TCP_IP(2)

TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol)".协议如其名,要对数据的传输进行一个详细的控制. TCP协议段格式 源/目的端口号:表示数据从哪个进程来,到哪个进程去. 32位序号/32位确认序号:后面详细讲. 4位TCP报头长度:表示该TCP头部有多少个32位…

【JS逆向实战-入门篇】某gov网站加密参数分析与Python算法还原

文章目录 1. 写在前面2. 请求分析3. 断点分析4. 算法还原 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

一分钟在SpringBoot项目中使用EMQ

先展示最终的结果: 生产者端: RestController RequiredArgsConstructor public class TestController {private final MqttProducer mqttProducer;GetMapping("/test")public String test() {User build User.builder().age(100).sex(1).address("世界潍坊渤…

【C项目】顺序表

简介&#xff1a;本系列博客为C项目系列内容&#xff0c;通过代码来具体实现某个经典简单项目 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

spark-cannot resolve overloaded method

使用split方法&#xff0c;出现错误&#xff1a;cannot resolve overloaded method 解决方法:那个regex应该是自动生成&#xff0c;所以split括号中输入空引号即可。 入门学习人的愚笨&#xff0c;也要继续坚持&#xff0c;加油&#xff01;

R语言基础学习-02 (此语言用途小众 用于数学 生物领域 基因分析)

变量 R 语言的有效的变量名称由字母&#xff0c;数字以及点号 . 或下划线 _ 组成。 变量名称以字母或点开头。 变量名是否正确原因var_name2.正确字符开头&#xff0c;并由字母、数字、下划线和点号组成var_name%错误% 是非法字符2var_name错误不能数字开头 .var_name, var.…

CISAW和CISP-PTE证书选择指南

&#x1f4e3;在信息安全领域&#xff0c;选择合适的证书可以为你的职业生涯增添光彩。很多从事信息渗透行业的朋友经常讨论CISP-PTE和CISAW之间的选择问题。今天就从4个方面带你详细了解这两张证书&#xff0c;帮你做出明智的选择&#xff01; 1️⃣证书的行业前景 &#x1f4…

八斗学习笔记

1 初始环境安装 Anaconda安装(一款可以同时创建跟管理多个python环境的软件) https://blog.csdn.net/run_success/article/details/134656460 Anaconda创建一个新python环境(安装人工智能常用的第三方python包&#xff0c;如&#xff1a;tensorflow、keras、pytorch) https://…

k8s的operator基石:controller-runtime源码解析

写在之前 今天开始开更controller-runtime的源码阅读&#xff0c;笔者建议大家在阅读前了解以下知识&#xff0c;可能会帮助大家更好的理解源码逻辑。 1.client-go的基础使用 2. 使用kubebuilder搭建一个简单的controller-runtime环境 3.informer的基本思想 1.源码环境搭建 参…

热仿真中稳态与瞬态的区别

对于热仿真&#xff0c;根据是否随时间变化&#xff0c;可分为稳态&#xff08;steady&#xff09;仿真和瞬态&#xff08;transient&#xff09;仿真两类。 从数学计算的角度&#xff0c;所谓稳态是指物理量不随时间变化的定常过程&#xff0c;即计算域中所有物理量均满足关系…

鸿蒙会取代Android吗?听风就是雨

现在说取代还谈不上&#xff0c;毕竟这需要时间。安卓作为全球第一的手机操作系统&#xff0c;短时间内还无法取代。持平iOS甚至超过iOS有很大可能&#xff0c;最终会呈现“三足鼎立”有望超过安卓基数。 作为全新的鸿蒙操作系统&#xff0c;其现在已经是全栈自研底座。按照鸿…

讯飞星火V3.5发布,一场大模型的奇幻之旅(深度体验讯飞星火V3.5)

在去年的人工智能领域&#xff0c;大模型无疑是最炙手可热的技术话题。其强大的数据处理和深度学习能力&#xff0c;为众多领域带来了革命性的变革。而其中&#xff0c;讯飞星火表现尤为出色&#xff0c;成为了行业的翘楚&#xff0c;得到了大量的用户认可&#xff0c;其中&…

负载均衡下的webshell上传+nginx解析漏洞

负载均衡下的webshell上传 一&#xff0c;负载均衡下webshell上传的四大难点 难点一&#xff1a;需要在每一台节点的相同位置上传相同内容的webshell 我们需要在每一台节点的相同位置都上传相同内容的 WebShell一旦有一台机器上没有&#xff0c;那么在请求轮到这台机器上的时…

【Linux】线程池的简易实现(懒汉模式)

文章目录 前言一、懒汉方式1.普通模式1.线程安全模式 二、源代码1.Task.hpp(要执行的任务)2.ThreadPool.hpp(线程池)3.Main.cpp 前言 线程池: 一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监…

【Qt】—— Qt Creator 创建项目

目录 &#xff08;一&#xff09;Qt Creator概览 &#xff08;二&#xff09;使⽤Qt Creator新建项⽬ &#xff08;一&#xff09;Qt Creator概览 从开始菜单或者快捷⽅式打开Qt Creator集成开发环境&#xff0c;启动之后看到类似下⾯的界⾯&#xff1a; 【解释说明】 菜单栏…

一体化设计:兼容多种OS系统Linux网关楼宇DDC

在工业物联网&#xff08;IIoT&#xff09;和智能建筑领域&#xff0c;钡铼网关具备高度灵活性与强大计算能力的边缘网关产品正逐渐成为推动行业智能化转型的关键要素。本文将详细介绍的基于Linux系统的4G工业智能网关&#xff0c;不仅拥有NXP i.MX8M Mini四核64位处理器的强大…

容器算法迭代器初识

#include<iostream> using namespace std; #include<vector> //vetor容器存放内置数据类型 void test01() {//创建了一个vector容器&#xff0c;数组 vector<int> v;//向容器中插入数据v.push_back (10);//尾插 v.push_back (20);v.push_back (30);v.push_ba…

Springboot使用数据库连接池druid

springboot框架中可以使用druid进行数据库连接池&#xff0c;下面介绍druid在springboot中使用和参数配置介绍。 数据库连接池&#xff08;Druid&#xff09;是一种用于管理数据库连接的机制&#xff0c;其工作原理和常见使用方法如下&#xff1a; 原理&#xff1a;数据库连接…

异步任务的一些思考

前言 XXL-Job部署教程 项目中&#xff0c;必然少不了数据的导入导出&#xff0c;针对数据的导入导出简单复盘一下。 为了不占用资源消耗时间&#xff0c;影响用户体验&#xff0c;大量数据的导入导出一般都是异步执行 导入的时候&#xff0c;如果数据量很大&#xff0c;一次…

C#使用RabbitMQ-4_路由模式(直连交换机)

简介 RabbitMQ中的路由模式是一种根据Routing Key有条件地将消息筛选后发送给消费者的模式。在路由模式中&#xff0c;生产者向交换机发送消息时&#xff0c;会指定一个Routing Key。交换机接收生产者的消息后&#xff0c;根据消息的Routing Key将其路由到与Routing Key完全匹…