[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] * nfor 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] += 1win = 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] * mf[0] = s[0] == t[0]for i in range(1, n):if not sum(f):return print('No')g = [0]*mfor 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] = 1f = gprint(['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] = 1elif f[i - 1][m - 1]:f[i][j] = 1elif f[i - 1][j - 1]:f[i][j] = 1print(['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]))

六、参考链接

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

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

相关文章

git基本操作(配图超详细讲解)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 创建git本地仓库 配置仓库 认识工作区&#xff0c;暂存区&#xff0c;版本库 修改文件 版本回退 撤销修改 删除文件 创建git本地仓库 要提前说的是&#xff0c;仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂…

内网穿透的应用-通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

windows nodejs 15.0.0下载安装

下载 Node v15.0.0 (Current) | Node.js (nodejs.org) 下载地址 https://nodejs.org/dist/v15.0.0/node-v15.0.0-x64.msi 安装 双击运行 等待安装完成 确认安装成功 管理员运行cmd 查看版本号

数据结构初阶leetcodeOJ题(二)

目录 第一题 思路&#xff1a; 第二题 思路 第三题 描述 示例1 思路 总结&#xff1a;这种类似的题&#xff0c;都是用快慢指针&#xff0c;相差一定的距离然后输出慢指针。 第一题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val…

工程化实战 - 前端AST(进阶)

###脚手架 *快速自动化搭建启动工具 目标: ####第一步:处理依赖 npm i path npm i chalk4.1.0 npm i fs-extra npm i inquirer8.2.2 npm i commander npm i axios npm i download-git-repo //ora easy-table figlet ####第二步:处理工程入口 ####3.加入命令交互 交互好帮手…

【计算机网络】TCP协议

文章目录 TCP协议TCP的结构TCP的特点 TCP如何保证可靠传输确认应答&#xff08;可靠机制&#xff09;超时重传&#xff08;可靠机制&#xff09;连接管理&#xff08;可靠机制&#xff09;滑动窗口&#xff08;效率机制&#xff09;流量控制&#xff08;可靠机制&#xff09;拥…

window系统vscode 编译wvp前端代码

下载代码 wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;负责实现核心信令与设备管理后台部分&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等…

zsh和ohmyzsh安装指南+插件推荐

文章目录 1. 安装指南2. 插件配置指南3. 参考信息 1. 安装指南 1. 安装 zsh sudo apt install zsh2. 安装 Oh My Zsh 国内访问GitHub sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"这将安装 Oh My Zsh 和所…

Xrdp+Cpolar实现远程访问Linux Kali桌面

XrdpCpolar实现远程访问Linux Kali桌面 文章目录 XrdpCpolar实现远程访问Linux Kali桌面前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于…

从傅里叶变换,到短时傅里叶变换,再到小波分析(CWT),看这一篇就够了(附MATLAB傻瓜式实现代码)

本专栏中讲了很多时频域分析的知识&#xff0c;不过似乎还没有讲过时频域分析是怎样引出的。 所以本篇将回归本源&#xff0c;讲一讲从傅里叶变换→短时傅里叶变换→小波分析的过程。 为了让大家更直观得理解算法原理和推导过程&#xff0c;这篇文章将主要使用图片案例。 一…

数据结构第四课 -----线性表之栈

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

C_12练习题

一、单项选择题(本大题共20小题,每小题2分&#xff0c;共40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;并将所选项前的字母填写在答题纸的相应位置上。) C 风格的注释&#xff0c;也称块注释或多行注释&#xff0c;以&#xff08;&#xff09;…

软件开发、网络空间安全、人工智能三个方向的就业和前景怎么样?哪个方向更值得学习?

软件开发、网络空间安全、人工智能这三个方向都是当前及未来的热门领域&#xff0c;每个领域都有各自的就业前景和价值&#xff0c;以下是对这三个方向的分析&#xff1a; 1、软件开发&#xff1a; 就业前景&#xff1a;随着信息化的加速&#xff0c;软件开发的需求日益增长。…

SVG的viewBox、width和height释义, 示例及代码

svg的是没有边界的&#xff0c;svg画布只是用于展示svg世界中某一个范围的内容&#xff0c;而对于超过了svg画布范围的内容&#xff0c;则会被遮挡。默认svg画布默认显示世界坐标下原点坐标的width*height面积的矩形视野。 ​ 我们可以通过viewBox来修改默认的显示配置&#…

CAS源码工程搭建记录

CAS源码工程搭建 1.下载2.gradle下载源改为阿里云&#xff0c;解决下载慢的问题3.解决保存 1.下载 git clone -b 5.3.x https://gitee.com/mirrors/CAS.git如果下载的是压缩包&#xff0c;导入工程会保存&#xff0c;因为builder.gradle的第20行开始有取git信息&#xff0c;如…

实战提升(六)

前言&#xff1a;Practice makes perfect&#xff01;今天实战Leetcode链表分割还有回文结构。今天的题全都来自于牛客网。 实战一&#xff1a; 思路&#xff1a;我们一这个链表为例&#xff0c;小于5的链表尾插到第一个链表&#xff0c;大于5的链表尾插到第二个链表&#xf…

React升级到18版本

前言 升级前react版本是16.9.0&#xff0c;react-dom版本为16.9.0&#xff0c;react-router-dom为5.1.2版本。 安装 // npm npm install react react-dom// yarn yarn add react react-dom// pnpm pnpm install react react-dom启动项目 此时&#xff0c;项目可以正常运行&…

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

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

element ui修改select选择框背景色和边框色

一、修改时间输入框的背景和边框字体颜色 <div class"hright"><el-date-picker :popper-append-to-body"false" class"custom-timeselect" v-model"form.timevalue" type"daterange" range-separator"至"…

qt-C++笔记之treeWidget初次使用

qt-C笔记之treeWidget初次使用 code review! 文章目录 qt-C笔记之treeWidget初次使用1.运行2.文件结构3.main.cpp4.widget.h5.widget.cpp6.widget.ui7.main.qrc8.qt_widget_test.pro9.options.png 1.运行 2.文件结构 3.main.cpp 代码 #include "widget.h"#include…