AtcoderABC253场

news2024/11/21 0:18:14

A - Median?A - Median?

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

题目大意

给定三个整数a、b和c,判断b是否是这些整数的中位数。

思路分析

判断升序降序两种情况

时间复杂度分析

O(1)

代码

#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if((b>=a&&c>=b)||(a>=b&&b>=c))
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}

B - Distance Between TokensB - Distance Between Tokens

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

题目大意

给定一个网格,其中有两个不同的方块上面有棋子。方块的状态由H行W列的字符串S1, …, SH表示。如果Si,j = ‘o’,表示第i行第j列的方块上有一个棋子;如果Si,j= ‘-’,表示该方块上没有棋子。允许将其中一个棋子移动到其四周相邻的方块中,但不能移动到网格外部。求使得两个棋子相遇所需的最小移动次数。

思路分析

先找出两个棋子的位置,然后计算它们之间的水平和垂直距离,将两者相加即可得到最小移动次数。

时间复杂度分析

O(H * W)
遍历网格需要O(H * W)的时间复杂度,计算最小移动次数只需常数时间。因此,整体的时间复杂度为O(H * W)。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 105;

int main() {
    int h, w;
    cin >> h >> w;
    char a[N][N];
    vector<pair<int, int>> b;
    
    for(int i = 0; i < h; i++) {
        for(int j = 0; j < w; j++) {
            cin >> a[i][j];
            if(a[i][j] == 'o') {
                b.push_back({i, j});
            }
        }
    }
    
    cout << abs(b[0].first - b[1].first) + abs(b[0].second - b[1].second) << endl;

    return 0;
}

C - Max - Min QueryC - Max - Min Query

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

题目大意

题目要求处理一系列的查询操作。

  • 查询1,将一个整数插入到数列S中;
  • 查询2,计算数列中移除指定整数的最多c个元素(不超过数列有指定整数的个数);
  • 查询3,计算multiset中最大值和最小值之间的差值。

思路分析

首先,我们声明一个空的multiset容器 multiset st; ,用于存储整数元素。

然后,使用循环处理所有的查询。在每个查询中,根据不同的操作类型执行相应的操作:

  • 对于查询1,读取整数x,并使用 st.insert(x) 将x插入到multiset中。
  • 对于查询2,读取整数x和次数c。通过循环 while (c-- and st.find(x) != st.end()) ,删除multiset中最多c个等于x的元素。
  • 对于查询3,在multiset中找到最大值和最小值,计算并输出它们的差值 *st.rbegin() - *st.begin() 。

知识点积累

std::multiset<int> st;

1.erase() 当集合st包含{3, 3, 4}时,执行下面的代码会发生什么?

st.erase(3);

我们期望只删除一个3,但实际上st的内容变成了{4}。如果将一个值作为erase()的参数,它将删除所有具有该值的元素,因此需要小心处理。

如果要删除单独的x,应该这样编写代码:

st.erase(st.find(x));

2.count()的复杂度 使用st.count(x)的计算时间为O(k + log N),其中N是st中元素的数量,k是st中包含x的数量。

因此,如果在处理查询2时使用st.count(x),最坏情况下总共需要O(Q^2)的时间。相反,你应该使用O(log N)的操作,它的时间复杂度为O(log N)。由于st.find(x)最多被调用O(Q)次,这样可以适应时间限制。

时间复杂度分析

O(Q^2 log N^)

代码

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

int main() {
    int q;
    cin >> q;
    multiset<int> st;
    while (q--) {
        int t;
        cin >> t;
        if (t == 1) {
            int x;
            cin >> x;
            st.insert(x);
        } else if (t == 2) {
            int x, c;
            cin >> x >> c;
            while (c-- and st.find(x) != st.end()) {
                st.erase(st.find(x));
            }//c-- 表示每次循环时将c的值减1,并检查结果是否为非零。当c的值降至0时,循环将停止。
            //st.find(x) 用于查找multiset st 中第一个等于x的元素的迭代器。
        } 
        else {
            cout << *st.rbegin() - *st.begin() << endl;//st.begin() 返回multiset st 中第一个(最小的)元素的迭代器。
            //st.rbegin() 返回multiset st 中最后一个(最大的)元素的反向迭代器。
        }
    }
}

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

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

相关文章

Non-Local Video Denoising by CNN

摘要 Non-local patch based methods were until recently state-of-the-art for image denoising but are now outper formed by CNNs. Y et they are still the state-of-the-art for video denoising, as video redundancy is a key factor to attain high denoising perfor…

JavaWeb——Cookie和Session的工作流程

目录 一、定义 1、Cookie定义 2、Session 二、Cookie和Session的联系和区别 1、联系 2、区别 一、定义 1、Cookie定义 Cookie是浏览器在本地存储数据的一种机制&#xff0c;来自于服务器。 服务器在响应中会带有Set-Cookie字段&#xff0c;通过这个字段就可以把要保存在浏…

及早识别面肌痉挛症状,科学治疗是关键!

随着现代社会的快节奏生活和各种压力的增加&#xff0c;面肌痉挛这一神经肌肉紊乱性疾病的发病率也逐渐上升。面肌痉挛是指由于面肌肌肉群异常收缩而导致的面部肌肉抽搐和不自主运动的症状。如果不及早识别和治疗&#xff0c;将对患者的生活质量产生严重影响。因此&#xff0c;…

C语言,封装自定义函数

1、封装自定义函数&#xff0c;计算数组的最大和&#xff0c;最大差 //第一数组 #include <stdio.h> #include <string.h> int MaxSum(int len,int arr[]); int MaxDel(int len,int arr[]); int main(int argc, const char *argv[]) {int arr[]{5,6,8,51,31,51,88…

2023 7.10~7.16 周报 (RTM研究与正演的Python复现)

0 上周回顾 上周简单阅读了论文《Deep-Learning Full-Waveform Inversion Using Seismic Migration Images》, 但是并没读完…因为这篇论文中提到一个技术吸引了注意力: RTM (Reverse-time migration) 于是计划下周去专门熟悉熟悉RTM的机制, 并且试着用Python复现这个操作. 另…

数据处理 | Matlab实现Lichtenberg算法的机器学习数据选择

文章目录 效果一览基本介绍源码设计参考资料效果一览 基本介绍 Matlab实现Lichtenberg算法的机器学习数据选择 Lichtenberg算法适用于回归和分类数据集,并根据数量和最大覆盖范围选择最佳算法。Lichtenberg算法(Lichtenberg algorithm,LA)是由Pereira等人于2021年提出的一种…

Python爬虫——urllib_下载

urlretrieve(url&#xff0c; filename)函数 url 代表的是下载的路径 filename文件的名字 下载网页: url_page "http://www.baidu.com" urllib.request.urlretrieve(url_page, baidu.html)下载图片: url_img "https://img0.baidu.com/it/u2751401762,34216…

VUE研究

1.v2与v3的区别 vue3对源码的管理根据模块进行拆分&#xff0c;在不同目录中对不同的模块进行分别维护&#xff1b; vue3是基于typescript语言进行开发的&#xff0c;这样可以进行更好的类型检查&#xff1b; vue3体积减小&#xff0c;去除了不常使用的API&#xff0c;Tree sha…

DevOps B站学习版(二)

学习地址&#xff1a; 01.DevOps的诞生_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Pt4y1H7Zq/?p1&vd_source1f09c23f556b3d6a9b7706f8db12fa54%E3%80%81 正文开始 找到这个地方&#xff0c;修改 可以写成基于标签拉取和构建工程&#xff0c;下面也选择Tag即可…

Python 自学 day03 容器tuple(元组)的定义与使用,序列,字典,集合,多返回值传递,不定长参数函数

1. tuple 元组 1.1 元组的定义 定义&#xff1a;元组同列表一样&#xff0c;都是可以封装多个、不同类型的元素在内。但最大的不同点在于: 元组一旦定义完成﹐就不可修改。 1.2 元组的创建方法 t1 (1,111,1111,11,1111,222) #元组的定义方法 t2 (22,) …

Postman+Newman+Git+Jenkins+Slack 接口自动化和监控

目录 前言&#xff1a; 一、Newman 介绍&#xff1a; 1、简介 2、安装 3、检查 4、运行 二、Newman 命令行介绍&#xff1a; newman run [options] 测试结果配置 ------------------------------------分 割 线----------------------------------------------------…

2023年最新水果编曲软件FL Studio Producer Edition 21.0.3 Build 3517中文完美至尊解锁免费下载安装激活详细教程

fl studio21.0.3.3517中文解锁特别版是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;让您的计算机成为全功能录音室。除此之外&#xff0c;这款软件功能非常强大&#xff0c;为用户提供了许多音频处理工具&#xff0…

《红蓝攻防构建实战化网络安全防御体系》读书笔记

作者&#xff1a;奇安信安服团队 ◆ 1.3 红队 各个团队在演练中的角色与分工情况如下。目标系统运营单位&#xff1a;负责红队整体的指挥、组织和协调。安全运营团队&#xff1a;负责整体防护和攻击监控工作。攻防专家&#xff1a;负责对安全监控中发现的可疑攻击进行分析和研…

LiveNVR监控流媒体Onvif/RTSP功能-安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口

LiveNVR安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、接口鉴权1.2、禁止游客访问 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 CookieToken2.1.2.2、携带 U…

VUE- quill-editor 编辑器使用及自定义toobar详解

vue使用编辑器&#xff0c;这里讲解编辑器quil-editor 官网&#xff1a;https://quilljs.com/docs/modules/toolbar 1&#xff1a;安装quill-eidtor npm i quill1.3.6 --save 2&#xff1a;创建一个页面&#xff0c;再template里写入 <template><div class"…

@ConditionalOnMissingBean 不生效

还要一点需要注意的是 有顶级接口类型写接口类型,像下面这个也控制不住加载多个相同类型的Bean,因为父类最先加载,子类之间不能算作同一种类型Bean

Git详细安装教程

对于Git这块&#xff0c;我也算是个小白&#xff0c;最近在学习Git&#xff0c;所以趁此机会详细讲解一下Git的安装教程以及安装过程中遇到的问题&#xff0c;也欢迎大家对其补充&#xff0c;共同进步&#xff01; 1、下载Git Git的下载地址&#xff08;windows系统&#xff…

【STM32CubeIDE】 stm32f103的内部Flash读写,double数值读写

单片机stm32f103c8t6&#xff0c;程序存储器64Kb&#xff1a; 对其最后一页&#xff0c;第63页进行读写操作&#xff0c;空间1Kb。 写入一个32位的数据0x12345678到Flash首地址为0x0800FC00.则在Flash中存储情况如下&#xff1a; 即&#xff0c;低位地址存储数据的低位&#xf…

Python实现简易计算器

文章目录 一、需求分析1.1 功能分析1.2 性能分析 二、技术原理三、详细设计3.1 导入tkinter库3.2 定义全局变量3.3 定义添加函数3.4 定义结果函数3.5 定义清空函数3.6 创建主窗口并指定其大小和位置3.7 创建输入框3.8 创建数字和运算符按钮3.9 创建等于号和清除按钮 四、功能实…

解决打开excel时报错 “不能使用对象链接和嵌入”

问题截图 打开excel文件或者插入对象时&#xff0c;直接弹出不能使用对象链接和嵌入报错信息。 解决方法 按 winr 组合快捷键&#xff0c;打开运行&#xff0c;输入 dcomcnfg.exe 按回车确定 此时进入到组件服务管理界面&#xff0c;依次选择 组件服务-计算机-我的电脑-DOCM…