当前位置: 首页 > news >正文

【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的过程,但是中途却卡壳了许久,有几个输出一直没想明白。等完全想明白时,比赛时间已经到了。❌

希望未来也能继续努力,紧跟大佬们的步伐,继续加油 💪

image-20230225212919384


周赛信息 📚

时间: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 101T10

所有测试点满足 1≤T≤1041 \le T \le 10^41T1043≤n≤1093 \le n \le 10^93n109

【输入样例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 个。

你可以在不改变单词顺序的前提下,在这一行中任意添加 <>, 符号。

你的任务是构造出一个有效类型字符串。

输出这个有效类型字符串。

注意:

  1. 有效类型字符串中 不含 空格或其它多余字符。
  2. 可以证明如果存在满足条件的有效类型字符串,那么它一定是唯一的。
  3. 如果不存在满足条件的有效类型字符串,输出 Error occurred 即可。

【输入】

第一行包含整数 nnn,表示给定单词中 int 的数量。

第二行包含若干个单词,每个单词要么是 pair,要么是 int

【输出】

输出满足条件的有效类型字符串,如果不存在,则输出 Error occurred

注意,有效类型字符串中 不含 空格或其它多余字符。

【数据范围】

666 个测试点满足:1≤n≤51 \le n \le 51n5
所有测试点满足:1≤n≤1051 \le n \le 10^51n105,输入的总单词数量不超过 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/

image-20230226202730027

【复盘后的优化代码】✅

//
// 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∼n1n

这些点之间没有任何边。

给定 ddd 个需求,编号 1∼d1∼d1d

其中,第 iii 个需求是让点 xix_ixi 和点 yiy_iyi 连通。

需求可能存在重复。

在本题中,你需要依次解决 ddd 个问题,编号 1∼d1∼d1d

其中,第 iii 个问题是,请你在图中添加恰好 iii 条无向边(不能添加重边和自环),使得:

  1. iii 个需求都得到满足。
  2. 所有点的度的最大值尽可能大。

对于每个问题,你不需要输出具体方案,你只需要输出度的最大可能值。

注意:

  1. 如果点 aaa 和点 bbb 之间存在路径,则称点 aaa 和点 bbb 连通。
  2. 图中与点 aaa 关联的边数,称为点 aaa 的度。
  3. 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 102n10

所有测试点满足,2≤n≤10002 \le n \le 10002n10001≤d≤n−11 \le d \le n−11dn11≤xi,yi≤n1 \le x_i,y_i \le n1xi,yinxi≠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/

image-20230226093749980

【复盘后的优化代码】✅

//
// 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场周赛复盘&#xff08;2023.2.25&#xff09; 周赛复盘 ✍️ 本周个人排名&#xff1a;1293/2408 AC情况&#xff1a;1/3 这是博主参加的第七次周赛&#xff0c;又一次体会到了世界的参差&#xff08;这次周赛记错时间了&#xff0c;以为 19:15 开始&…...

L1-087 机工士姆斯塔迪奥

在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里&#xff0c;BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。 你需要处理这个副本其中的一个机制&#xff1a;NM 大小的地图被拆分为了 NM 个 11 的格子&#xff0c;BOSS 会选择若干行或/及若干列释放技能&#xff0c;玩家…...

本周大新闻|索尼PS VR2立项近7年;传腾讯将引进Quest 2

本周大新闻&#xff0c;AR方面&#xff0c;传立讯精密开发苹果初代AR头显&#xff0c;第二代低成本版将交给富士康&#xff1b;iOS 16.4代码曝光新的“计算设备”&#xff1b;EM3推出AR眼镜Stellar Pro&#xff1b;努比亚将在MWC2023推首款AR眼镜。VR方面&#xff0c;传闻腾讯引…...

aws console 使用fargate部署aws服务快速跳转前端搜索栏

测试过程中需要在大量资源之间跳转&#xff0c;频繁的点击不如直接搜索来的快&#xff0c;于是写了一个搜索框方便跳转。 前端的静态页面可以通过s3静态网站托管实现&#xff0c;但是由于中国区需要备案的原因&#xff0c;可以使用ecs fargate部署 步骤如下&#xff1a; 编写…...

Redis实战之Redisson使用技巧详解

一、摘要什么是 Redisson&#xff1f;来自于官网上的描述内容如下&#xff01;Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的 redis 常用数据结构命令服务&#xff0c;还提供了许多分布…...

SQLAlchemy

文章目录SQLAlchemy介绍SQLAlchemy入门使用原生sql使用orm外键关系一对多关系多对多关系基于scoped_session实现线程安全简单表操作实现方案CRUDFlask 集成 sqlalchemySQLAlchemy 介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上&#xff0c;使用关系…...

【Linux学习笔记】8.Linux yum 命令和apt 命令

前言 本章介绍Linux的yum命令和apt命令。 Linux yum 命令 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#xf…...

windows服务器实用(4)——使用IIS部署网站

windows服务器实用——IIS部署网站 如果把windows服务器作为web服务器使用&#xff0c;那么在这个服务器上部署网站是必须要做的事。在windows服务器上&#xff0c;我们一般使用IIS部署。 假设此时前端给你一个已经完成的网站让你部署在服务器上&#xff0c;别人可以在浏览器…...

Random(二)什么是伪共享?@sun.misc.Contended注解

目录1.背景简介2.伪共享问题3.问题解决4.JDK使用示例1.背景简介 我们知道&#xff0c;CPU 是不能直接访问内存的&#xff0c;数据都是从高速缓存中加载到寄存器的&#xff0c;高速缓存又有 L1&#xff0c;L2&#xff0c;L3 等层级。在这里&#xff0c;我们先简化这些复杂的层级…...

Linux解压压缩

打包tar首先我们得提一下专门用于打包文件的命令——tartar用于备份文件&#xff0c;打包多个文件或者目录&#xff0c;也可以用于还原被打包的文件假设打包目录test下的文件 tar -cvf test.tar ./test 假设打包目录test下的文件,并用gzip命令将包压缩 tar -zcvf test.tar ./te…...

JavaSe第3次笔记

1.String str "hello";字符串类型。 2.两个字符串类型相加意思是拼接&#xff0c;类似于c语言里面的strcat函数。 3.整型变成字符串类型: int a 10; String str String. valueOf(a); 4.当字符串和其他类型进行相加的时候&#xff0c;结果就是字符串。(不完全…...

非人工智能专业怎样从零开始学人工智能?

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是指让机器具有类似人类智能的能力&#xff0c;包括感知、理解、推理、学习、规划、决策、创造等多个方面。人工智能研究涉及到计算机科学、数学、物理学、心理学、哲学等多个领域&#xff0c;旨在模拟和…...

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自动装配有什么帮助

文章目录如果没时间看的话&#xff0c;在这里直接看总结一、Java SPI的概念和术语二、看看Java SPI是如何诞生的三、Java SPI应该如何应用四、从0开始&#xff0c;手撸一个SPI的应用实例五、SpringBoot自动装配六、Spring SPI机制与Spring Factories机制做对比七、这里是给我自…...

因果推断10--一种大规模预算约束因果森林算法(LBCF)

论文&#xff1a;A large Budget-Constrained Causal Forest Algorithm 论文&#xff1a;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&#xff09;以人类可读形式显示磁盘空间的使用情况 2&#xff09;显示磁盘的inode信息 3&#xff09;显示磁盘和文件系统类型 4&#xff09;指定显示文件系统 5&#xff09;显示所有磁盘空间中的内容 …...

如何使用goquery进行HTML解析以及它的源码分析和实现原理

目录 goquery 是什么 goquery 能用来干什么 goquery quick start 玩转goquery.Find() 查找多个标签 Id 选择器 Class 选择器 属性选择器 子节点选择器 内容过滤器 goquery 源码分析 图解源码 总结 goquery 简介 goquery是一款基于Go语言的HTML解析库&#xff0c;…...

【Java 数组和集合 区别及使用案例】

Java中数组和集合都是用来存储一组数据的容器&#xff0c;但是在实际使用中&#xff0c;它们有一些区别和不同的使用场景。 数组 vs 集合&#xff1a;存储方式 数组是一个固定长度的容器&#xff0c;它的长度一旦被初始化之后&#xff0c;就无法再改变了。而集合是一个动态长…...

使用pynimate制作动态排序图

大家好&#xff0c;数据可视化动画使用Python包就可以完成&#xff0c;效果如下&#xff1a;想要使用Pynimate&#xff0c;直接import一下就行&#xff1a;import pynimate as nim输入数据后&#xff0c;Pynimate将使用函数Barplot&#xff08;&#xff09;来创建条形数据动画。…...

Mysql 事务的隔离性(隔离级别)

Mysql 中的事务分为手动提交和自动提交&#xff0c;默认是自动提交&#xff0c;所以我们在Mysql每输入一条语句&#xff0c;其实就会被封装成一个事务提交给Mysql服务端。 手动提交需要先输入begin&#xff0c;表示要开始处理事务&#xff0c;然后就是常见的sql语句操作了&…...

2023年网络安全竞赛——Python渗透测试PortScan.py

端口扫描Python渗透测试:需求环境可私信博主获取 任务环境说明: 服务器场景:PYsystem0041服务器场景操作系统:未知服务器场景FTP用户名:anonymous 密码:空1. 从靶机服务器的FTP上下载PortScan.py,编辑Python程序PortScan.py,实现...

【数据结构】栈的接口实现(附图解和源码)

栈的接口实现&#xff08;附图解和源码&#xff09; 文章目录栈的接口实现&#xff08;附图解和源码&#xff09;前言一、定义结构体二、接口实现&#xff08;附图解源码&#xff09;1.初始化栈2.销毁栈3.入栈4.判断栈是否为空5.出栈6.获取栈顶元素7.获取栈中元素个数三、源代码…...

LC-1255. 得分最高的单词集合(回溯)

1255. 得分最高的单词集合 难度困难60 你将会得到一份单词表 words&#xff0c;一个字母表 letters &#xff08;可能会有重复字母&#xff09;&#xff0c;以及每个字母对应的得分情况表 score。 请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」&#xff1a;能够由…...

从中国文化看面试挑人标准

文章目录标准一、面相1. 1 四白眼1.2 浓眉二、讲话2.1 言多与气虚总结本文结合中国面相&#xff0c;是个概率性问题&#xff0c;对于个体无效。 标准 正直&#xff0c;三观正&#xff0c;沟通好&#xff0c;技术。从概率上讲&#xff1a; 正直且三观正的人----有恒心&#x…...

谦卑对象设计模式

谦卑设计模式介绍 “谦卑”在这里是拟人化的,指难以测试的对象清晰地认识到自己的局限性,只发挥自己的桥梁和通信作用,并不从中干预信息的传输。 谦卑对象模式‘最初的设计目的是帮助单元测试的编写者区分容易测试的行为与难以测试的行为&#xff0c;并将它们隔离。其设计思路…...

QML Animation动画详解

1.Animation简介 Animation类型提供了四个属性&#xff1a; alwaysRunToEnd&#xff1a;该属性接收布尔类型的参数。该属性保存动画是否运行到完成才停止。当loops属性被设置时&#xff0c;这个属性是最有用的&#xff0c;因为动画将正常播放结束&#xff0c;但不会重新启动。…...

C#开发的OpenRA的加载界面边框的细节

C#开发的OpenRA的加载界面边框的细节 在前面已经看到加载整个界面, 如果仔细地看,会发现加载界面的边框有一个红色的框。 这个红色的边框到底是怎么样来的呢? 其实它不是实时画上去的,而从纹理贴图里贴上去的。 也许有一些人会问,纹理贴图里的图片这么小,怎么样会有这么大…...

计算机网络笔记、面试八股(四)—— TCP连接

本章目录4. TCP连接4.1 TCP报文段的首部格式4.2 TCP连接如何保证可靠4.3 ARQ协议4.3.1 停止等待ARQ协议4.3.1.1 无差错情况4.3.1.2 出现差错情况4.3.1.3 确认丢失和确认迟到4.3.2 连续ARQ协议4.3.2.1 流水线传输4.3.2.2 累积确认4.3.2.3 滑动窗口协议4.3.3 停止等待ARQ和连续AR…...

Centos7 安装jenkins java1.8版本

1. 首先安装好jdk1.8 2. 安装jenkins 命令&#xff1a;(可以在根目录&#xff0c;创建文件夹 mkdir home 然后在此文件夹下操作 cd /home) a 清华源&#xff0c;获取jenkins安装包 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.346-1.1.noarch.rp…...

【每日阅读】JS知识(三)

var声明提升 js是一个解释性语言类型&#xff0c;预解析就是在执行代码之前对代码进行通读 var关键字是&#xff0c;在内存中声明一个变量名 js在代码执行之前 会经历两个环节 解释代码 和执行代码 声明式函数 内存中 先声明一个变量名是函数 这个名代表的是函数 乘法表 // for…...