AtcoderABC301场

news2024/11/29 12:45:10

A - Order Something Else A - Order Something Else

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

题目大意

计算 Takahashi 最少需要支付多少钱才能获得 AtCoder Drink。AtCoder Drink 可以按照原价 P 日元购买,也可以使用折扣券以 Q 日元的价格购买,但必须再额外购买 N 道菜品中的一道才能使用折扣券。每道菜品的价格分别为 D1, D2, …, DN。

思路分析

为了使总支付金额最小,Takahashi 需要比较两种情况:

  • 不使用折扣券时,直接按照原价购买 AtCoder Drink,总支付金额为 P。
  • 使用折扣券时,选择一道最便宜的菜品 Di,并将折扣券与 AtCoder Drink 一起购买,总支付金额为 (Di + Q)。
    通过比较这两种情况的总支付金额,取较小值作为最终结果。

时间复杂度

O(NlogN)

代码

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int main()
{
int a[N];
int n,p,q;
cin>>n>>p>>q;
for(int i=0;i<n;i++)
{cin>>a[i];
}
sort(a,a+n);
int x=a[0];
int res=min(x+q,p);
cout<<res<<endl;
return 0;
}

B - Strictly SuperiorB - Strictly Superior

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

题目大意

给定N种产品,每种产品都有一个价格和一些功能。需要判断是否存在某个产品严格优于其他产品。如果存在两个产品i和j,满足以下条件之一,则认为产品i严格优于产品j:

  • 产品i的价格高于产品j的价格。
  • 产品j具有产品i所有的功能,或者产品i缺少产品j拥有的某些功能。

思路分析

因为数据范围较小,可以使用暴力解法来解决这个问题。遍历所有可能的产品对(i, j),并检查是否满足上述条件。如果找到了满足条件的产品对,则输出"Yes",否则输出"No"。

算法步骤:

遍历所有产品对(i, j)。
对于每个产品对,根据条件进行判断:
如果p[i] > p[j],则说明产品i的价格严格高于产品j的价格,输出"Yes",结束程序。
如果p[i] == p[j],并且d[j] > d[i],则说明产品j拥有比产品i更多的功能,输出"Yes",结束程序。
否则,继续遍历下一个产品对。
如果遍历所有产品对后仍未找到满足条件的产品对,则输出"No"。

时间复杂度

O(N2)

代码

#include <iostream>
using namespace std;

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

    int p[107], d[107], ks[107][107];
    for (int i = 1; i <= n; i++) { 
        cin >> p[i] >> d[i]; 
        for (int j = 1, t; j <= d[i]; j++) { 
            cin >> t; // 读取功能的编号
            ks[i][t] = 1; // 将第i个产品具有的该功能标记为1
        }
    }

    for (int i = 1; i <= n; i++) { // 外层循环遍历所有可能的产品对(i, j)
        for (int j = 1; j <= n; j++) {
            if (p[i] >= p[j]) { // 判断第i个产品的价格是否大于等于第j个产品的价格
                bool flg = true; 
                for (int k = 1; k <= m; k++) { // 内层循环遍历每个功能
                    if (ks[i][k] > ks[j][k]) { // 判断第i个产品是否具有第j个产品缺少的功能
                        flg = false; // 如果第i个产品具有第j个产品缺少的功能,则将标志位flg设为false
                        break; 
                    }
                }
                if (flg) { // 如果第j个产品具有第i个产品的所有功能,并且满足以下条件之一:
                    if (p[i] > p[j] || (p[i] == p[j] && d[j] > d[i])) { // 1. 第i个产品价格高于第j个产品,或者2. 价格相等时,第j个产品功能数量大于第i个产品
                        cout << "Yes" << endl; 
                        return 0; 
                    }
                }
            }
        }
    }

    cout << "No" << endl; 
    return 0;
}

C - ReversibleC - Reversible

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

题目大意

一组有重复序列的字符串,两个字符串若正序或逆序相同,则两字符串相同,问有多少根不同的串

思路分析

题目要求找出N根棍子中不同的棍子数量。首先需要使用一个数据结构来存储已经出现过的棍子,以便进行比较。可以使用集合(set)来存储棍子的字符串。

  • 读入字符串s表示当前棍子上球的序列。
  • 如果集合T中没有与s相等的元素(即count(s)等于0),说明这是一个新的棍子,则将ans加一。
  • 将字符串s插入到集合T中。
  • 将字符串s反转后插入到集合T中,以考虑逆序情况。

时间复杂度

O(NMlogN)
首先,需要遍历N个棍子,对于每个棍子,需要进行字符串的比较和插入操作。集合的插入和查找操作的平均时间复杂度为O(logN),而字符串的比较和反转操作的时间复杂度取决于字符串的长度,设为O(M)。因此,总体时间复杂度为O(NMlogN)。

代码

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;

int main(void)
{
  int n;
  cin >> n; 
  
  int ans = 0; 
  set<string> T; 
  string s;
  for(int i = 1; i <= n; i++){
    cin >> s; 
    if(T.count(s) == 0) ans++; // 如果集合T中没有与s相等的元素,则将ans加一
    T.insert(s); // 将字符串s插入到集合T中
    reverse(s.begin(), s.end()); // 反转字符串s
    T.insert(s); // 将反转后的字符串s插入到集合T中,以考虑逆序情况
  }
  cout << ans << endl;
  
  return 0

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

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

相关文章

Navicat代码片段存储位置

1、在Navicat的主界面中&#xff0c;选择“工具”——》“选项”——》文件位置&#xff0c;如下图 配置文件就是存放自动保存、代码片段等文件的位置&#xff0c;其中snippets&#xff08;片段&#xff09;就是自定义片段的存储位置了

【Android】在某个model中找不到自己的R资源的原因

背景 在某个新建的model为lib包的时候&#xff0c;我想在这个model内的activity引用R.string 等等资源&#xff0c;但是Android studio找不到。 解决 原来我之前误删了这个manifest中的 补齐包名即可。

Triton_server部署学习笔记

下载镜像 docker pill http://nvcr.io/nvidia/tritonserver:22.07-py3 docker run --gpus all -itd -p8000:8000 -p8001:8001 -p8002:8002 -v /home/ai-developer/server/docs/examples/model_repository/:/models nvcr.io/nvidia/tritonserver:22.07-py3 docker exec -it a5…

使用shell监控应用运行状态通过企业微信接收监控通知

目的&#xff1a;编写shell脚本来监控应用服务运行状态&#xff0c;若是应用异常则自动重启应用通过企业微信接收监控告警通知 知识要点&#xff1a; 使用shell脚本监控应用服务使用shell脚本自动恢复异常服务通过企业微信通知接收监控结果shell脚本使用数组知识&#xff0c;…

[黑苹果EFI]Lenovo ThinkPad T490电脑 Hackintosh 黑苹果引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板Lenovo ThinkPad T490 处理器Intel Intel Core i5 8265U (Quad Core)已驱动 内存16 GB:8 GB Samsung DDR 4 2666 Mhz *2已驱动 硬盘PC SN520 NVM…

maven项目使用java命令行运行类的main方式示例

因为需要测试一个东西,本地测试无问题,测试环境一直有问题,就想在测试环境测试下 直接写了个测试类,main方法直接运行测试逻辑 测试类写好,发现自己不会使用命令行运行 运行测试类一直报"错误: 找不到或无法加载主类" 折腾好久,终于找到两个帖子 记录下来,避免自己下…

Docker容器常用命令大全:熟练掌握使容器优化更加高效

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据

查询当天数据 select * from tab where FROM_UNIXTIME(fabutime, %Y%m%d) 20230717; mysql TO_DAYS(date) 函数 TO_DAYS(date) 给定一个日期date, 返回一个天数 (从年份0开始的天数 )。 mysql> SELECT TO_DAYS(950501); -> 728779 mysql查询今天、昨天、7天、近30天…

【Linux后端服务器开发】TCP协议

目录 一、TCP报头结构 二、确认应答机制 三、超时重传机制 四、连接管理机制 五、滑动窗口 六、拥塞控制 七、应答策略 一、TCP报头结构 TCP全称为传输控制协议&#xff08;Transmission Control Protocol&#xff09;&#xff0c;数据在传输过程需要严格的控制 TCP协议…

CONNECT BY 介绍以及用法

CONNECT BY 介绍以及用法 CONNECT BY作用是&#xff0c;NNECT BY用来查询树形数据&#xff0c; CONNECT BY 语句的用法 语句格式&#xff1a; start with 条件A connect by prior orgid parentorgid 用法 情况1&#xff1a; start with 条件A connect by…

【树链】CF1702 G

Problem - G2 - Codeforces 题意&#xff1a; 思路&#xff1a; 首先&#xff0c;一条树链可以被分为两部分&#xff1a;左半部分和右半部分 我们可以把所有可能是链上的点排序&#xff0c;把深度最大的点默认成起点st&#xff0c;接下来去找终点ed ed在和st不同的链上 且 …

MSA【1】:Segment Anything Model for Medical Image Analysis: an Experimental Study

文章目录 前言1. Abstraction & Introduction1.1. Abstraction1.2. Introduction1.2.1. What is SAM?1.2.2. How to segment medical images with SAM? 2. Methodology2.1. SAM is used in the process of segmentation of medical images2.1.1. Semi-automated annotati…

【压力传感器】LPS22DFTR、LPS33KTR 绝对 压力,ADP5131 排气式压力计 50kPa 6-DIP

LPS22DFTR MEMS纳米压力传感器是一款超紧凑型压阻式绝对压力传感器&#xff0c;可用作数字输出气压计。LPS22DF的功耗更低&#xff0c;与上一代产品相比压力噪声更低。该器件包括一个传感元件和一个IC接口&#xff0c;通过I2C、MIPI I3CSM或SPI接口从传感元件向应用程序进行通信…

蒙德里安的梦想

题目 求把 NM 的棋盘分割成若干个 12 的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0c;M4 时&#xff0c;共有 5 种方案。当 N2&#xff0c;M3 时&#xff0c;共有 3 种方案。 如下图所示&#xff1a; 输入格式 输入包含多组测试用例。 每组测试用例占一行&…

GO语言基础-04-数据类型-04-map(map的排序)

文章目录 1. 按value排序1.1 思路1.2 语法1.3 完整示例 2. 按key排序2.1 思路2.2 语法示例2.3 完整示例2.4 完整示例 1. 按value排序 1.1 思路 map本身的顺序不可控&#xff0c;我们考虑如下方法实现排队&#xff1a; 思路一&#xff1a;通过一个切片来接收拍好队的map成员思…

多线程应用场景

文章目录 前言一、CountDownLatch倒计时锁二、如何控制线程并发数&#xff1f;三、浅聊ThreadLocal1.ThreadLocal定义2.ThreadLocal源码解读3.关于ThreadLocal的一个案例 总结 前言 本篇介绍多线程中的应用场景&#xff0c;比如倒计时锁CountDownLatch、信号量Semaphore、以及…

【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块5

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

一种简化的3D点云车道线自动识别标注一些思考

0. 简介 作为3D车道线训练来说&#xff0c;数据集是至关重要的&#xff0c;而使用点云的精确性来完成准确的车道线地图构建是一个非常重要且有趣的事情。下面我们将会从一个例子开始&#xff0c;分阶段来告诉大家该怎么样去完成一个简单的3D点云车道线自动识别标注工具。 1. …

WordPress作为可扩展的企业级解决方案

网络商业世界就像一片汪洋大海&#xff0c;大型企业是大海中最大的鱼。然而&#xff0c;只因为你比其他人都大&#xff0c;并不意味着你不能逆流而上。相反&#xff0c;企业业务面临的挑战更大&#xff0c;对网站的技术要求更高。 多年来&#xff0c;大型公司通常依赖最昂贵的…

爆肝整理,接口自动化测试面试题+答案,25k*15薪如何达成的...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、请问你是如何做…