【Acwing 周赛复盘】第92场周赛复盘(2023.2.25)
【Acwing 周赛复盘】第92场周赛复盘(2023.2.25)
周赛复盘 ✍️
本周个人排名:1293/2408
AC情况:1/3
这是博主参加的第七次周赛,又一次体会到了世界的参差(这次周赛记错时间了,以为 19:15 开始,不然 T3 应该也能 AC,就差一点 😂)
T1 签到题。✅
T2 没啥思路,就跳过去做 T3 了。❌ (经过y总讲解后,发现这是一道非常精妙,涉及树的前序遍历的递归题,值得反复咀嚼)
T3 题意有点绕,但是读明白之后,就是一道并查集的变形题目,但是融合了一点贪心思想。在看样例1时,以为只要输出最大集合的元素个数就行了;但是模拟样例2时发现,不对啊,这后面几个输出怎么和自己想的不一样呢。于是就开始模拟样例2的过程,但是中途却卡壳了许久,有几个输出一直没想明白。等完全想明白时,比赛时间已经到了。❌
希望未来也能继续努力,紧跟大佬们的步伐,继续加油 💪

周赛信息 📚
时间:2023年 2 月 25 日 19:00-20:15
竞赛链接: https://www.acwing.com/activity/content/2908/
y总直播间:http://live.bilibili.com/21871779
y总录播讲解视频:【AcWing杯 - 第 92 场周赛讲解】
题目列表 🧑🏻💻
| 题目名称 | 原题链接 | 视频讲解 | 难度 |
|---|---|---|---|
| AcWing 4864. 多边形 | 原题链接 | 视频链接 | 简单 🟢 |
| AcWing 4865. 有效类型 | 原题链接 | 视频链接 | 中等 🟡 |
| AcWing 4866. 最大数量 | 原题链接 | 视频链接 | 困难 🔴 |
题解 🚀
【题目A】多边形
【题目描述】
如果一个正多边形的边数 nnn 能被 444 整除,那么就称该正多边形是美丽的。
现在,给定一个正多边形的边数 nnn,请你判断它是否是美丽的。
【输入】
第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据占一行,包含一个整数 nnn。
【输出】
每组数据输出一行结果,如果给定正多边形是美丽的,则输出 YES,否则输出 NO。
【数据范围】
前 333 个测试点满足 1≤T≤101 \le T \le 101≤T≤10。
所有测试点满足 1≤T≤1041 \le T \le 10^41≤T≤104,3≤n≤1093 \le n \le 10^93≤n≤109。
【输入样例1】
4
3
4
12
1000000000
【输出样例1】
NO
YES
YES
YES
【原题链接】
https://www.acwing.com/problem/content/4867/
【题目分析】
签到题。
【周赛现场 AC 代码】✅
#include<bits/stdc++.h>using namespace std;int T, x;int main() {cin >> T;while (T--) {cin >> x;if (x % 4 == 0)cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}
【题目B】有效类型
【题目描述】
在本题中,关于有效类型字符串,具体定义如下:
int是有效类型字符串。- 如果字符串
X和字符串Y都是有效类型字符串,则pair<X,Y>是有效类型字符串。
现有一行若干个单词,每个单词要么是 pair,要么是 int,并且其中 int 的数量恰好为 nnn 个。
你可以在不改变单词顺序的前提下,在这一行中任意添加 <、>、, 符号。
你的任务是构造出一个有效类型字符串。
输出这个有效类型字符串。
注意:
- 有效类型字符串中 不含 空格或其它多余字符。
- 可以证明如果存在满足条件的有效类型字符串,那么它一定是唯一的。
- 如果不存在满足条件的有效类型字符串,输出
Error occurred即可。
【输入】
第一行包含整数 nnn,表示给定单词中 int 的数量。
第二行包含若干个单词,每个单词要么是 pair,要么是 int。
【输出】
输出满足条件的有效类型字符串,如果不存在,则输出 Error occurred。
注意,有效类型字符串中 不含 空格或其它多余字符。
【数据范围】
前 666 个测试点满足:1≤n≤51 \le n \le 51≤n≤5。
所有测试点满足:1≤n≤1051 \le n \le 10^51≤n≤105,输入的总单词数量不超过 10510^5105,输入的 int 数量恰好为 nnn。
【输入样例1】
3
pair pair int int int
【输出样例1】
pair<pair<int,int>,int>
【输入样例2】
1
pair int
【输出样例2】
Error occurred
【原题链接】
https://www.acwing.com/problem/content/4868/
【题目分析】
递归构建 前序遍历的 pair 二叉树,代码十分精妙(详见代码注释)
这种递归的解题方式 值得反复咀嚼。
详细讲解见y总视频:https://www.acwing.com/video/4637/

【复盘后的优化代码】✅
//
// Created by Ricky X on 2023/2/24.
//#include<bits/stdc++.h>using namespace std;
int n;
string str, ans;bool dfs() {// 当前有字符可以读入if (cin >> str && str != "") {// 当前读入字符串为pair,则需要构建左右子树if (str == "pair") {ans += "pair<";if (!dfs()) return false; // 无法构建左子树,返回falseans += ",";if (!dfs()) return false; // 无法构建右子树,返回falseans += ">";return true;} else if (str == "int") { // 读入为int,直接返回trueans += "int";return true;}} else { // 当前没有字符读入,无法构建,返回falsereturn false;}
}int main() {cin >> n;// dfs()的作用是读入一个字符串,并且将其作为根结点,判断能否建立一颗树// dfs()返回true,说明当前读入的字符串可以构建一颗树// dfs()返回false,说明当前读入的字符串不可以构建一棵树// 不可以构建的情况:1.字符串读完了;2.读入pair,但是无法构建左右子树// dfs()构建成功,但是还有字符串读入,就会有多棵树,舍去该情况// 当且仅当dfs()构建成功,且没有字符串读入时,才能输出答案// 答案存储到字符串ans中bool flag = dfs();if (flag && cin >> str) flag = false;// 输出结果if (!flag) cout << "Error occurred" << endl;else cout << ans << endl;return 0;
}
【周赛现场 AC 代码】
现场未 AC
【题目C】最大数量
【题目描述】
一个无向图有 nnn 个点,编号 1∼n1∼n1∼n。
这些点之间没有任何边。
给定 ddd 个需求,编号 1∼d1∼d1∼d。
其中,第 iii 个需求是让点 xix_ixi 和点 yiy_iyi 连通。
需求可能存在重复。
在本题中,你需要依次解决 ddd 个问题,编号 1∼d1∼d1∼d。
其中,第 iii 个问题是,请你在图中添加恰好 iii 条无向边(不能添加重边和自环),使得:
- 前 iii 个需求都得到满足。
- 所有点的度的最大值尽可能大。
对于每个问题,你不需要输出具体方案,你只需要输出度的最大可能值。
注意:
- 如果点 aaa 和点 bbb 之间存在路径,则称点 aaa 和点 bbb 连通。
- 图中与点 aaa 关联的边数,称为点 aaa 的度。
- ddd 个问题之间是相互独立的,每个问题的答案都必须独立计算。
【输入】
第一行包含两个整数 n,dn,dn,d。
接下来 ddd 行,其中第 iii 行包含两个整数 xi,yix_i,y_ixi,yi,表示第 iii 个需求是让点 xix_ixi 和点 yiy_iyi 连通。
【输出】
共 ddd 行,其中第 iii 行输出第 iii 个问题中,度的最大可能值。
【数据范围】
前三个测试点满足,2≤n≤102 \le n \le 102≤n≤10。
所有测试点满足,2≤n≤10002 \le n \le 10002≤n≤1000,1≤d≤n−11 \le d \le n−11≤d≤n−1,1≤xi,yi≤n1 \le x_i,y_i \le n1≤xi,yi≤n,xi≠yix_i \ne y_ixi=yi。
【输入样例1】
7 6
1 2
3 4
2 4
7 6
6 5
1 7
【输出样例1】
1
1
3
3
3
6
【输入样例2】
10 8
1 2
2 3
3 4
1 4
6 7
8 9
8 10
1 4
【输出样例2】
1
2
3
4
5
5
6
8
【原题链接】
https://www.acwing.com/problem/content/4869/
【题目分析】
并查集 + 贪心(菊花图)
具体讲解见y总视频:https://www.acwing.com/video/4638/

【复盘后的优化代码】✅
//
// Created by Ricky X on 2023/2/24.
//#include<bits/stdc++.h>using namespace std;
const int N = 1010;
int pre[N], sum[N];
int n, d, a, b, op; // op是可以额外连接的操作次数// 并查集初始化
void init() {for (int i = 1; i <= n; i++) pre[i] = i, sum[i] = 1;
}// 查找元素x的祖先
int find(int x) {if (pre[x] != x) pre[x] = find(pre[x]);return pre[x];
}// 合并两个集合
void join(int a, int b) {int x = find(a);int y = find(b);if (x != y) pre[x] = y, sum[y] += sum[x];else op++; // 额外连接操作数+1
}// 查询
void solve() {// 将当前集合的大小存入vectorvector<int> v;v.clear();for (int i = 1; i <= n; i++)if (pre[i] == i)v.push_back(sum[i]);sort(v.begin(), v.end(), greater<int>());// 通过op次操作,把前op个元素数量最大的集合合并int res = v[0]; // 第一个最大的集合是不用合并的for (int i = 1; i <= op; i++) {res += v[i];}cout << res - 1 << endl;
}int main() {ios::sync_with_stdio(false); //cin读入优化cin.tie(0);cin >> n >> d;init();for (int i = 1; i <= d; i++) {cin >> a >> b;join(a, b);solve(); // 求解当前问题i的答案}return 0;
}
相关文章:
【Acwing 周赛复盘】第92场周赛复盘(2023.2.25)
【Acwing 周赛复盘】第92场周赛复盘(2023.2.25) 周赛复盘 ✍️ 本周个人排名:1293/2408 AC情况:1/3 这是博主参加的第七次周赛,又一次体会到了世界的参差(这次周赛记错时间了,以为 19:15 开始&…...
L1-087 机工士姆斯塔迪奥
在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。 你需要处理这个副本其中的一个机制:NM 大小的地图被拆分为了 NM 个 11 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家…...
本周大新闻|索尼PS VR2立项近7年;传腾讯将引进Quest 2
本周大新闻,AR方面,传立讯精密开发苹果初代AR头显,第二代低成本版将交给富士康;iOS 16.4代码曝光新的“计算设备”;EM3推出AR眼镜Stellar Pro;努比亚将在MWC2023推首款AR眼镜。VR方面,传闻腾讯引…...
aws console 使用fargate部署aws服务快速跳转前端搜索栏
测试过程中需要在大量资源之间跳转,频繁的点击不如直接搜索来的快,于是写了一个搜索框方便跳转。 前端的静态页面可以通过s3静态网站托管实现,但是由于中国区需要备案的原因,可以使用ecs fargate部署 步骤如下: 编写…...
Redis实战之Redisson使用技巧详解
一、摘要什么是 Redisson?来自于官网上的描述内容如下!Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了许多分布…...
SQLAlchemy
文章目录SQLAlchemy介绍SQLAlchemy入门使用原生sql使用orm外键关系一对多关系多对多关系基于scoped_session实现线程安全简单表操作实现方案CRUDFlask 集成 sqlalchemySQLAlchemy 介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系…...
【Linux学习笔记】8.Linux yum 命令和apt 命令
前言 本章介绍Linux的yum命令和apt命令。 Linux yum 命令 yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装…...
windows服务器实用(4)——使用IIS部署网站
windows服务器实用——IIS部署网站 如果把windows服务器作为web服务器使用,那么在这个服务器上部署网站是必须要做的事。在windows服务器上,我们一般使用IIS部署。 假设此时前端给你一个已经完成的网站让你部署在服务器上,别人可以在浏览器…...
Random(二)什么是伪共享?@sun.misc.Contended注解
目录1.背景简介2.伪共享问题3.问题解决4.JDK使用示例1.背景简介 我们知道,CPU 是不能直接访问内存的,数据都是从高速缓存中加载到寄存器的,高速缓存又有 L1,L2,L3 等层级。在这里,我们先简化这些复杂的层级…...
Linux解压压缩
打包tar首先我们得提一下专门用于打包文件的命令——tartar用于备份文件,打包多个文件或者目录,也可以用于还原被打包的文件假设打包目录test下的文件 tar -cvf test.tar ./test 假设打包目录test下的文件,并用gzip命令将包压缩 tar -zcvf test.tar ./te…...
JavaSe第3次笔记
1.String str "hello";字符串类型。 2.两个字符串类型相加意思是拼接,类似于c语言里面的strcat函数。 3.整型变成字符串类型: int a 10; String str String. valueOf(a); 4.当字符串和其他类型进行相加的时候,结果就是字符串。(不完全…...
非人工智能专业怎样从零开始学人工智能?
人工智能(Artificial Intelligence,AI)是指让机器具有类似人类智能的能力,包括感知、理解、推理、学习、规划、决策、创造等多个方面。人工智能研究涉及到计算机科学、数学、物理学、心理学、哲学等多个领域,旨在模拟和…...
MyBatis之增、删、查、改
目录 前言 一、配置MyBatis开发环境 1.1 创建数据库和表 1.2 添加框架支持 1.3 创建目录结构 1.4 配置数据库连接 1.5 配置MyBatis中的XML文件路径 二、添加业务代码 2.1 查询数据库操作 2.1.1 添加实体类 2.1.2 添加mapper接口 2.1.3 在xml中实现mapper接口 2.1.…...
死磕Spring,什么是SPI机制,对SpringBoot自动装配有什么帮助
文章目录如果没时间看的话,在这里直接看总结一、Java SPI的概念和术语二、看看Java SPI是如何诞生的三、Java SPI应该如何应用四、从0开始,手撸一个SPI的应用实例五、SpringBoot自动装配六、Spring SPI机制与Spring Factories机制做对比七、这里是给我自…...
因果推断10--一种大规模预算约束因果森林算法(LBCF)
论文:A large Budget-Constrained Causal Forest Algorithm 论文:http://export.arxiv.org/pdf/2201.12585v2.pdf 目录 0 摘要 1 介绍 2 问题的制定 3策略评价 4 方法 4.1现有方法的局限性。 4.2提出的LBCF算法 5验证 5.1合成数据 5.2离线生…...
Linux基础命令-df显示磁盘的使用情况
文章目录 文章目录 df 命令介绍 语法格式 基本参数 参考实例 1)以人类可读形式显示磁盘空间的使用情况 2)显示磁盘的inode信息 3)显示磁盘和文件系统类型 4)指定显示文件系统 5)显示所有磁盘空间中的内容 …...
如何使用goquery进行HTML解析以及它的源码分析和实现原理
目录 goquery 是什么 goquery 能用来干什么 goquery quick start 玩转goquery.Find() 查找多个标签 Id 选择器 Class 选择器 属性选择器 子节点选择器 内容过滤器 goquery 源码分析 图解源码 总结 goquery 简介 goquery是一款基于Go语言的HTML解析库,…...
【Java 数组和集合 区别及使用案例】
Java中数组和集合都是用来存储一组数据的容器,但是在实际使用中,它们有一些区别和不同的使用场景。 数组 vs 集合:存储方式 数组是一个固定长度的容器,它的长度一旦被初始化之后,就无法再改变了。而集合是一个动态长…...
使用pynimate制作动态排序图
大家好,数据可视化动画使用Python包就可以完成,效果如下:想要使用Pynimate,直接import一下就行:import pynimate as nim输入数据后,Pynimate将使用函数Barplot()来创建条形数据动画。…...
Mysql 事务的隔离性(隔离级别)
Mysql 中的事务分为手动提交和自动提交,默认是自动提交,所以我们在Mysql每输入一条语句,其实就会被封装成一个事务提交给Mysql服务端。 手动提交需要先输入begin,表示要开始处理事务,然后就是常见的sql语句操作了&…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
