[ATC复盘] abc329 20231118

[ATC复盘] abc329 20231118

    • 总结
    • A - Spread
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • B - Next
      • 1. 题目描述
      • 2. 思路分析-
      • 3. 代码实现
    • C - Count xxx
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • D - Election Quick Report
      • 2. 思路分析
      • 3. 代码实现
    • E - Stamp
      • 2. 思路分析
      • 3. 代码实现
    • F - Colored Ball
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

总结

  • 前6题除了E都挺水的。
  • A 语法题。
  • B 排序。
  • C dp计数。
  • D 贪心
  • E dp
  • F 启发式合并(模拟)

在这里插入图片描述

A - Spread

链接: A - Spread

1. 题目描述

把输入的字符串每个字符中间加空格输出。

2. 思路分析

  • join

3. 代码实现

def solve():
    s, = RS()
    print(' '.join(s))

B - Next

链接: B - Next

1. 题目描述

在这里插入图片描述

2. 思路分析-

  • 题目问出了最大之外,最大的数是哪个。
  • 就是第二大。排序即可。

3. 代码实现

def solve():
    n, = RI()
    a = sorted(set(RILST()))
    print(a[-2])

C - Count xxx

链接: C - Count xxx

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 问有多少种连续相同字符的子串。如果字母a最长连续8个,那么a的连续子串有8种。
  • 那么把每种字母最长连续计数即可,我习惯用dp处理。

3. 代码实现


def solve():
    n, = RI()
    s, = RS()
    cnt = Counter([s[0]])
    f = [1] * n
    for i in range(1, n):
        if s[i] == s[i - 1]:
            f[i] += f[i - 1]
        cnt[s[i]] = max(cnt[s[i]], f[i])
    print(sum(cnt.values()))

D - Election Quick Report

链接: D - Election Quick Report
在这里插入图片描述

2. 思路分析

按顺序唱票,问当前获胜者是谁,平票取id最小的。
  • 直接计数,更新最大计数即可,注意id也一起比较。

3. 代码实现

def solve():
    n, m = RI()
    a = RILST()
    cnt = [0 for _ in range(n + 1)]
    win = [0, 0]  # 计数,-下标
    for v in a:
        cnt[v] += 1
        win = max(win, [cnt[v], -v])
        print(-win[1])

E - Stamp

链接: E - Stamp
在这里插入图片描述

2. 思路分析

已知len(t)<len(s),问s可不可以由t覆盖拼接而来。即给长为len(s)的格子,通过无限盖地毯t的方式,铺满格子,且俯视图是s。
  • 由看到m<=5,考虑dp。
  • 令f[i][0~4]表示s[i]位置能不能匹配t[j]。那么,只有s[i]==s[j]时才能匹配,另外还要满足:
    • 如果前一个位置可以匹配t[j-1],那么这里可以匹配t[j]
    • 如果j=0,那么可以从这个位置新盖一块t。
    • 如果前一个位置可以匹配t[-1],那这里可以匹配任何位置,盖完了再盖前边即可。
    • 另外注意,地毯前后不能越界,即j<=i 且m-j<=n-i。
  • 实现时可以空间优化。
  • 注意方案必须每个位置都有匹配项,不能只判断f[-1][-1]。

3. 代码实现

def solve():
    n, m = RI()
    s, = RS()
    t, = RS()
    f = [0] * m
    f[0] = s[0] == t[0]
    for i in range(1, n):
        if not sum(f):
            return print('No')
        g = [0]*m
        for j in range(min(m, i + 1)):
            if s[i] == t[j] and m - j <= n - i:
                if j == 0 or f[m-1] or f[j-1]:
                    g[j] = 1
        f = g
    print(['No', 'Yes'][f[-1]])

def solve1():
    """
    f[i][0~4]表示前缀匹配时,s[i]是否能用t[j]来匹配
    """
    n, m = RI()
    s, = RS()
    t, = RS()
    f = [[0] * m for _ in range(n)]
    f[0][0] = s[0] == t[0]
    for i in range(1, n):
        if not sum(f[i - 1]):
            return print('No')
        for j in range(min(m, i + 1)):
            if s[i] == t[j] and m - j <= n - i:
                if j == 0:
                    f[i][j] = 1
                elif f[i - 1][m - 1]:
                    f[i][j] = 1
                elif f[i - 1][j - 1]:
                    f[i][j] = 1

    print(['No', 'Yes'][f[-1][-1]])

F - Colored Ball

链接: F - Colored Ball

在这里插入图片描述

2. 思路分析

一开始每个盒子都有一种颜色的小球,q个操作,每次把a盒子所有球倒进b盒子,问b盒子每次的球数量。
  • 语法题,启发式合并,把每次移动少的那边的盒子,然后整体给盒子动位置。
  • 启发式合并均摊复杂度是O(nlgn)的。

  • 有道类似的题,更难一些,用并查集F - BOX

3. 代码实现

#    379    ms
def solve():
    n, q = RI()
    c = [0] + RILST()
    cc = [{v} for v in c]

    for _ in range(q):
        a, b = RI()
        if len(cc[a]) > len(cc[b]):
            cc[a], cc[b] = cc[b], cc[a]
        cc[b] |= cc[a]
        cc[a] = set()
        print(len(cc[b]))


#     499   ms
def solve1():
    n, q = RI()
    c = [0] + RILST()
    cc = [{v} for v in c]

    for _ in range(q):
        a, b = RI()
        if len(cc[a]) < len(cc[b]):
            for v in cc[a]:
                cc[b].add(v)
            cc[a] = set()
        else:
            for v in cc[b]:
                cc[a].add(v)
            cc[b] = cc[a]
            cc[a] = set()
        print(len(cc[b]))

六、参考链接

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

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

相关文章

一文讲明 Spring 的使用 【全网超详细教程】

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 前言 目录结构 Spring 的相关代码 都公开在…

使用opera/火狐浏览器将网页固定到桌面和任务栏

1.单击Windows 图标&#xff0c;搜索Opera&#xff0c;右键单击它&#xff0c;然后选择Open file location 2.右键单击Opera&#xff0c;然后选择Show more options 3.将光标悬停在“发送到”选项上&#xff0c;然后选择“桌面&#xff08;创建快捷方式&#xff09;” 4.转到…

Thrift协议详解

前言特点高效性的体现可拓展性的体现 应用场景示例拓展其他常用协议接口描述语言&#xff08;IDL&#xff09;TBinaryProtocolTCompactProtocolTDebugProtocolTDenseProtocolTJSONProtocol 前言 Thrift协议是一种接口描述语言和二进制通讯协议&#xff0c;它被用来定义和创建跨…

解决:ERROR: No matching distribution found for PIL

解决&#xff1a;ERROR: No matching distribution found for PIL 背景 在搭建之前的代码环境时&#xff0c;报错&#xff1a; ERROR: Could not find a wersion that satisfies the requirement PIL&#xff08;from versions: none&#xff09; ERROR: No matching distribu…

DHCP协议详解

前言 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;是一个局域网的网络协议&#xff0c;使用UDP协议工作&#xff0c;主要有两个用途&#xff1a;给内部网络或网络服务供应商自动分配IP地址&#xff0c;给用户或者内部网络管…

学习.NET验证模块FluentValidation的基本用法

开源博客项目Blog .NET中使用FluentValidation验证部分对象实例的属性值&#xff0c;本文学习FluentValidation模块的基本用法&#xff0c;后续再学习Blog .NET项目FluentValidation模块的用法。   FluentValidation模块支持Linq 表达式&#xff0c;同时支持链式操作&#xf…

二叉树前序,中序,后序遍历

前序遍历&#xff08;递归&#xff09;&#xff1a; 中序遍历&#xff08;递归&#xff09;&#xff1a;

机器视觉系统选型-定光照强度

同一个外形结构的光源&#xff0c;光照强度受如下影响&#xff1a; 单颗灯珠的亮度灯珠排列的数量和密度漫射板/防护板的材质&#xff08;透明、半透明、全漫射&#xff09; 在合理范围内提升光照强度&#xff0c;可降低对相机曝光时长的要求 外形结构尺寸相同的两款光源&am…

nodejs微信小程序-利康药房管理系统的设计与实现- 安卓-python-PHP-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Sa-Token 整合Java17和SpringBoot

目录 前言引入项目开启登录认证路由拦截鉴权解决兼容问题总结 前言 之前无意中发现Sa-Token权限认证框架&#xff0c;项目十分好用。 项目地址&#xff1a; https://github.com/dromara/sa-token 官网地址&#xff1a; https://sa-token.cc/doc.html#/start/example 我的个人…

Apache Hive源码阅读环境搭建

前置软件&#xff1a; JDK 1.8 Maven 3.3.9 1 下载源码 # 下载源码 git clone https://github.com/apache/hive.gitcd hive# 查看标签 git tag# 切换到要阅读的指定版本的tag git checkout rel/release-2.1.02 编译源码 mvn clean install -DskipTests执行报错 日志如下 E…

Linux procps-ng - top

procps-ng 是一个开源的进程管理工具集&#xff0c;它提供了一系列用于监控和管理系统进程的命令行工具。它是 procps 工具集的一个分支&#xff0c;旨在改进和增强原有的 procps 工具。 procps-ng 包括了一些常用的命令行工具&#xff0c;例如&#xff1a; ps&#xff1a;用于…

NPM 与 XUI 共存!Nginx Proxy Manager 搭配 X-UI 实现 Vless+WS+TLS 教程!

之前分享过搭建可以与宝塔共存的一个 “魔法” 服务器状态监控应用 ——xui&#xff0c;支持 VmessWSTLS。 最近 Docker 视频出的比较多&#xff0c;前阵子又出现了宝塔国内版存在隐私泄露的问题&#xff0c;很多小伙伴其实都不用宝塔了&#xff0c;那么&#xff0c;在我们现在…

<MySQL> 什么是JDBC?如何使用JDBC进行编程?

目录 一、JDBC是什么&#xff1f; 二、JDBC常用接口和类 2.1 DataSource 2.2 Connection 2.3 Statement 2.4 ResultSet 三、JDBC的使用 3.1 获得数据库驱动包 3.2 添加到项目依赖 3.3 描述数据库服务器 3.4 建立数据库连接 3.6 执行SQL语句和接收返回数据 3.7 释放…

08-黑马点评项目发布笔记和查看笔记功能的实现

发布笔记 数据模型 tb_blog探店笔记表,包含笔记的标题、文字、图片等 tb_blog探店笔记表对应的实体类 增加用户图标和和用户姓名以及是否被点赞过了的字段,这些字段不属于Blog表只是为了实现在展示笔记的时候同时展示用户的信息 Data EqualsAndHashCode(callSuper false) …

移动端路径传参以数字的形式,写死的情况

页面1 async getListTransferAndApprova() { //把mark值拼接到路径的后面&#xff0c;定义一个变量&#xff0c;使得切换穿的mark都不一样let mark ;if (this.tabsCurrent 0) {mark 2;} else if (this.tabsCurrent 1) {mark 3;}else if (this.tabsCurrent 2) {mark 4;}…

CSS特效014:模仿钟摆效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

毕业设计1784 ASP.NET停车场管理系统

摘要 本文设计了一个停车场管理系统&#xff0c;该系统分为超级管理员和管理员两种用户。系统实现了车位管理、停车卡管理、停车管理、统计报表、系统管理等功能。管理员可以添加、查看、编辑或删除车位信息、停车卡信息、停车记录等&#xff0c;同时可以按日、月、年统计进场…

springboot实现在线人数统计

在线人数统计 笔者做了一个网站&#xff0c;需要统计在线人数。 在线有两种&#xff1a; 一、如果是后台系统如果登录算在线&#xff0c;退出的时候或者cookie、token失效的时候就算下线 二、如果是网站前台&#xff0c;访问的时候就算在线 今天我们来讲一下第2种情况&…

创建谷歌账号 绕过手机验证(2023.11亲测有效)

如何成功注册谷歌账号&#xff1a;一个详细实用指南 写在最前面谷歌注册全流程环境配置切换至全英文环境 开通foxmail.com邮箱在英文环境下注册验证邮箱注册过程中的注意事项完成&#xff01;总结 写在最前面 在这个数字化迅速发展的时代&#xff0c;谷歌账号几乎成为了我们日…