【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语句操作了&…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
