AtcoderABC250场

news2024/12/1 0:42:56

A - Adjacent SquaresA - Adjacent Squares

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

题目大意

给定一个由H行W列组成的网格。令(i,j)表示从上到下第i行,从左到右第j列的方块。找出与方块(R,C)共享边的方块数量。
这里,方块(a,b)和方块(c,d)被称为共享边,当且仅当|a-c|+|b-d|=1。

思路分析

与其列举不如排除。都不是则加4.
根据题目定义的共享边,我们只需要判断方块的位置是否在给定方块的上方、下方、左侧或右侧即可确定是否为共享边。

时间复杂度

O(1)

AC代码

#include<bits/stdc++.h>
using namespace std;
int main() {
    int h, w, r, c;
    cin >> h >> w >> r >> c;
    
    int res = 0;
    if (r != 1) res++;
    if (r != h) res++;
    if (c != 1) res++;
    if (c != w) res++;
    
    cout << res << endl;
    
    return 0;
}

B - Enlarged Checker BoardB - Enlarged Checker Board

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

题目大意

给定了一个方块的布局规则和颜色填充规则,需要生成一个大小为(A×N)行(B×N)列的方块图案。

思路分析

大方块,再小方块
再把大方块按比例a,b分小

首先,根据给定的方块布局规则,创建一个n行n列的二维字符矩阵tile,用于表示每个小方块的颜色。然后,根据(A×N)行(B×N)列的尺寸,创建一个大小为(a×n)行(b×n)列的二维字符矩阵x,用于表示最终生成的方块图案。
接下来,通过遍历x矩阵,并根据矩阵元素的位置将对应的颜色填充到x矩阵中。具体地,对于x矩阵中的第i行第j列的元素,其对应的颜色是由tile矩阵中的(i/a)行(j/b)列的元素决定的。最后,按行输出x矩阵即可得到所需的方块图案。

时间复杂度

O(a×b×n^2)

  • 创建tile矩阵的时间复杂度为O(n^2)
  • 创建x矩阵的时间复杂度为O((a×n)×(b×n)) = O(a×b×n^2)
  • 遍历x矩阵填充颜色的时间复杂度为O((a×n)×(b×n)) = O(a×b×n^2)
  • 最终输出x矩阵的时间复杂度为O(a×n)

AC代码

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

int main()
{
    int n, a, b;
    cin >> n >> a >> b;

    // 创建tile矩阵并填充颜色
    vector<string> tile(n, string(n, '-'));
    for (int i = 0; i < n; i++)
    {
        if (i % 2 == 0)
        {
            for (int j = 0; j < n; j++)
            {
                if (j % 2 == 0)
                    tile[i][j] = '.';
                else
                    tile[i][j] = '#';
            }
        }
        else
        {
            for (int j = 0; j < n; j++)
            {
                if (j % 2 == 0)
                    tile[i][j] = '#';
                else
                    tile[i][j] = '.';
            }
        }
    }

    // 创建x矩阵并填充颜色
    vector<string> x(a * n, string(b * n, '-'));
    for (int i = 0; i < a * n; i++)
    {
        for (int j = 0; j < b * n; j++)
        {
            x[i][j] = tile[i / a][j / b];
        }
    }

    for (int i = 0; i < a * n; i++)
    {
        cout << x[i] << endl;
    }

    return 0;
}

C - Adjacent SwapsC - Adjacent Swaps

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

题目大意

有 N 个小球从左到右排成一排,初始时每个小球上都写了一个整数 i(编号),表示它在初始时在第 i 个位置上。接下来进行 Q 次操作,每次操作给定一个整数 x,将编号为 x 的小球向右移动一位,若小球 x 已经在最右边,则将其移动到最左边。求经过 Q 次操作后小球的最终编号序列。

思路分析

对于每个小球,记录它当前所在的位置和它所携带的编号,分别用数组 idx 和 sta 来表示。初始时,第 i 个小球所携带的编号为 i,第 i 个小球当前所在的位置为 i。
对于每次操作,先记录要交换的数的编号,用a记录和位置(b)。如果小球 x 不在最右边,则将它和它右边的小球交换位置,同时更新 idx 数组和 sta 数组(用swap);否则,将小球 x 和它左边的小球交换位置,同时更新 idx 数组和 sta 数组。
最终,输出 sta 数组中的元素即可得到最终的编号序列。

时间复杂度

O(Q)

  • 在每次操作中,只需要交换两个相邻元素的位置,因此每次操作的时间复杂度为 O(1)。总共执行 Q 次操作。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N=2*1e5+10;
int  sta[N];
int idx[N];
int a,b;
int main()
{
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++){
sta[i]=i;
idx[i]=i;
}
while(q--)
{
int x;
cin>>x;
if(idx[x]!=n){
a=idx[x];b=sta[idx[x]+1];
swap(sta[idx[x]],sta[idx[x]+1]);//更新原数组
idx[x]=idx[x]+1;//更新坐标
idx[b]=a;
}else{
a=idx[x];b=sta[idx[x]-1];
swap(sta[idx[x]],sta[idx[x]-1]);
idx[x]=idx[x]-1;
idx[b]=a;
}
}
for(int i=1;i<=n;i++)
{cout<<sta[i]<<' ';
}
cout<<endl;
return 0;
}

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

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

相关文章

网站测试自动化系统

首先先分解一下执行测试用例的步骤&#xff0c;编码实现每一个步骤&#xff0c;然后使用批处理的形式将工作流串起来&#xff1a;&#xff08;当然啦&#xff0c;我们也可以使用.NET里面的Workflow来实现&#xff0c;只不过那样的话我们需要格外添加一个命令—安装.NET Framewo…

数据排布与跨距对齐

1 数据排布 1.1 数据排布的概念 在深度学习框架中&#xff0c;特征图通常以四维数组的形式呈现&#xff0c;这四个维度分别是&#xff1a;批量大小N&#xff0c;特征图通道数C&#xff0c;特征图高度H&#xff0c;特征图宽度W。数据排布&#xff08;Layout&#xff09;指的就…

数学建模的赛题类型

一、预测类 指通过分析已有的数据或者现象&#xff0c;找出其内在发展规律&#xff0c;然后对未来情形做出预测的过程。 根据已知条件和求解目的&#xff0c;往往将预测类问题分为&#xff1a;小样本内部预测&#xff0c;大样本内部预测。 解决预测类赛题的一般步骤&#xff…

Minio桶复制(Bucket Replication)入门

文章目录 前言一、部署下载用户组添加 minio.service 文件新建配置文件 minio启动 二、安装 mc三、桶复制1.权限建立 Replication Admin 用户建立 Replication Remote User 用户 2.建立桶3建立桶复制4.验证 总结遇到问题 前言 桶复制&#xff1a; 可以理解像 mysql 主从备份&a…

基于linux下的高并发服务器开发(第二章)- 2.10 进程间通信简介

面试官经常问&#xff1a; ① 你知道进程间通信的方式有哪几种吗&#xff1f; ② 进程间通信当中某一个方式一个具体的原理是什么&#xff1f;怎么去实现呢&#xff1f; 01 / 进程间通讯概念 02 / Linux进程间通信的方式 怎样理解阻塞非阻塞与同步异步的区别&#xff1f; 怎样…

SpringCloud Gateway网关

文章目录 SpringCloud Gateway1.1 网关架构1.2微服务网关介绍1.3Spring Cloud Gateway(技术选型)1.4依赖1.5yaml配置(包含gateway相关配置,实现转发的功能)1.6断言案例:1.7断言详细介绍1.8 整合nacos1.9 nacos整合网关案例1.10动态路由 SpringCloud Gateway 1.1 网关架构 (dub…

专题-【哈夫曼树】

14年三-1&#xff09; 已知电文信息为“PEFFQ RQRFE QFPQR FPER” &#xff08;1&#xff09;请按此信息构造哈夫曼树&#xff0c;求出每个字符的最优编码&#xff1b; &#xff08;2&#xff09;若对每个字符进行等长编码&#xff0c;至少需要几位二进制数&#xff1f;哈夫…

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(二)

由于 Web 应用程序的复杂性和重要性, 导致其成为网络攻击的主要目标之一。攻击者在入侵一个网站后, 通常会植入一个 Webshell, 来持久化控制网站。但随着攻防双方的博弈, 各种检测技术、终端安全产品被广泛应用, 使得传统的以文件形式驻留的 Webshell 越来越容易被检测到, 内存…

# Linux终端控制字符详解以及简单应用实践

Linux终端控制字符详解以及简单应用实践 文章目录 Linux终端控制字符详解以及简单应用实践1 控制字符表2 控制字符 ESC &#xff08;0x1B&#xff0c;^[&#xff09;子参数表3 控制字符 ESC &#xff08;0x1B&#xff0c;^[&#xff09;子参数表 - 字符颜色参照表4 实践&#x…

Windows 如何锁定文件

一、背景 如果应用程序有操作本地文件的功能&#xff08;如&#xff1a;读、写、复制、移动、删除等等&#xff09;&#xff0c;那么在测试或调试该应用程序时&#xff0c;肯定需要测试文件被其他应用程序锁定时&#xff0c;你的应用程序是如何处理的。 那么如何在本地模拟文件…

抓包工具Fiddler的下载安装使用

文章目录 Fiddler1. 安装与使用教程2. 抓包工具的原理 Fiddler 1. 安装与使用教程 下载地址: https://www.telerik.com/fiddler/ 安装过程只用一路next即可&#xff1b; 下图是我们安装好Fiddler打开的界面&#xff1a; 右侧显示就是我们主机发送http/https请求的记录。如果…

黑马头条 分布式任务调度 定时计算热点文章、xxl-job、kafkaStream

xxl-Job分布式任务调度 1 今日内容 1.1 需求分析 目前实现的思路&#xff1a;从数据库直接按照发布时间倒序查询 问题1&#xff1a; 如何访问量较大&#xff0c;直接查询数据库&#xff0c;压力较大问题2&#xff1a; 新发布的文章会展示在前面&#xff0c;并不是热点文章 1.2 …

Flutter——最详细(NavigationRail)使用教程

NavigationRail 简介 一个 Material Design 小部件&#xff0c;旨在显示在应用程序的左侧或右侧&#xff0c;以便在少量视图&#xff08;通常在三到五个视图之间&#xff09;之间导航。 使用场景&#xff1a; 通过Row属性&#xff0c;左侧或右侧菜单栏按钮 属性作用onDestinati…

Hadoop——大数据生态体系详解

一.大数据概论 1.1 大数据概念 大数据&#xff08;big data&#xff09;&#xff1a;指无法在一定时间范围内用常规软件工具进行捕捉、管理 和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程 优化能力的海量、高增长率和多样化的信息资产…

前端 Jenkins 自动化部署

由于公司使用自己搭建的 svn 服务器来进行代码管理&#xff0c;因此这里 Jenkins 是针对 svn 服务器来进行的配置&#xff0c;其实跟Git 配置基本一致。 在没有自动化部署前 之前项目每次修改之后都需要本地 ​​npm run build ​​一次手动发布到服务器上方便测试和产品查看…

微服务组件Feign实战 - 解决日志配置失效

1. RPC概述 思考&#xff1a; 微服务之间如何方便优雅的实现服务间的远程调用&#xff1f; RPC 全称是 Remote Procedure Call &#xff0c;即远程过程调用&#xff0c;其对应的是我们的本地调用。RPC 的目的是&#xff1a;让我们调用远程方法像调用本地方法一样。 //本地调用…

【unity之IMGUI实践】游戏玩法逻辑实现【四】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

3.11 Bootstrap 徽章(Badges)

文章目录 Bootstrap 徽章&#xff08;Badges&#xff09;激活导航状态 Bootstrap 徽章&#xff08;Badges&#xff09; 下面将讲解 Bootstrap 徽章&#xff08;Badges&#xff09;。徽章与标签相似&#xff0c;主要的区别在于徽章的边角更加圆滑。 徽章&#xff08;Badges&…

短视频seo抖音矩阵号系统源码开发搭建分享

我们自主研发的短视频矩阵系统源码&#xff0c;技术研发的独立核心算法的视频内容管理和展示功能。无需额外的流量接口费用和复杂的配置&#xff0c;轻松地创建和管理短视频内容&#xff0c;短视频矩阵源码是指将抖音平台上的视频资源进行筛选、排序等操作&#xff0c;进而提升…

【ROS】ROS1人机界面开发:在QtCreator中创建ROS1功能包

【ROS】郭老二博文之:ROS目录 1、版本要求 ROS的QtCreator插件要和QtCreator版本对应一致,否则报错。 本人QtCreator版本为:10.0.1,需要下载安装ros_qtc_plugin的版本也要为10.0版本 2、安装 ros_qtc_plugin 2.1 下载插件 github:https://github.com/ros-industrial…