AtCoder 第409场初级竞赛 A~E题解
A Conflict
【题目链接】
原题链接:A - Conflict
【考点】
枚举
【题目大意】
找到是否有两人都想要的物品。
【解析】
遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。
【难度】
GESP三级
【代码参考】
#include<bits/stdc++.h>
using namespace std; int main(){ string t, a;int n;cin >> n;cin >> t >> a;for(int i = 0; i < n; i++){if(t[i] == 'o' && a[i] == 'o'){cout << "Yes";return 0;} } cout << "No";return 0;
}
B Citation
【题目链接】
原题链接:B - Citation
【考点】
枚举
【题目大意】
这道题要求找到最大的非负整数 x,使得序列中至少有 x 个元素大于或等于 x
【解析】
利用排序和贪心策略来高效地确定这个 x 的值。
- 排序:将序列按降序排列,这样可以方便地从大到小检查每个可能的 x 值。
- 遍历检查:对于每个可能的 x 值(从 1 到 N),检查排序后的第 x 个元素(索引为 x-1)是否大于或等于 x。如果满足条件,则 x 是一个可行解。
- 确定最大值:遍历所有可能的 x 值后,最后一个满足条件的 x 即为所求的最大值。
【难度】
GESP三级
【代码参考】
#include<bits/stdc++.h>
using namespace std; int main(){ int n, a[105];cin >> n;for(int i = 0; i < n; i++){cin >> a[i];}// 按降序排列数组sort(a, a + n, greater<int>());int maxn = 0;for(int i = 1; i <= n; i++){// 检查第i个元素(索引为i-1)是否大于或等于iif(a[i-1] >= i) maxn = i;}cout << maxn;return 0;
}
C Equilateral Triangle
【题目链接】
原题链接:C - Equilateral Triangle
【考点】
数组计数法,三元组
【题目大意】
这道题要求在周长为 L 的圆上找到等边三角形的三元组 (a,b,c),其中每个点之间的弧长相等。
【解析】
关键在于利用圆的周期性和等边三角形的特性来高效计算符合条件的三元组数量。
- 条件判断:首先检查圆的周长 L 是否能被 3 整除。如果不能,则无法形成等边三角形,直接返回 0。
- 点的位置计算:通过前缀和数组计算每个点在圆上的位置,并对 L 取模,确保位置在 [0, L-1] 范围内。
- 数组统计:使用数组统计每个位置出现的次数。
- 三元组计数:如果 L 能被 3 整除,将圆分成三等份。对于每个可能的起点 i(范围从 0 到 L/3-1),检查 i、i+L/3 和 i+2*L/3 这三个位置的点数量。符合条件的三元组数目为这三个位置点数量的乘积之和。
【难度】
GESP四级
【代码参考】
#include<bits/stdc++.h>
using namespace std; const int N = 3e5 + 5;
long long a[N], n, l; // a数组用于统计每个位置出现的次数int main(){ cin >> n >> l;int x = 0;a[x] = 1; // 初始点1的位置为0for(int i = 0; i < n-1; i++){int t;cin >> t;x = (x + t) % l; // 计算下一个点的位置a[x]++; // 统计该位置出现的次数} // 如果周长不能被3整除,无法形成等边三角形if(l % 3 != 0){cout << 0;return 0;}long long ans = 0;// 遍历每个可能的起点ifor(int i = 0; i < l / 3; i++){// 计算三个等距位置的点数量乘积,并累加到答案中ans += (a[i] * a[i + l / 3] * a[i + l / 3 * 2]);}cout << ans;return 0;
}
D String Rotation
【题目链接】
原题链接:D - String Rotation
【考点】
字符串
【题目大意】
这道题要求对字符串执行一次循环左移操作,使得结果字符串的字典序最小。
【解析】
关键在于找到最优的子串位置进行操作,从而最小化字典序。
-
寻找第一个递减位置:从左到右遍历字符串,找到第一个满足 s[i] > s[i+1] 的位置 p。这个位置是字典序可能减小的关键点。
-
处理全递增情况:如果字符串完全递增(即不存在上述位置 p),则直接输出原字符串(因为任何操作都无法减小字典序)。
-
确定最优子串:从位置 p+1 开始向右遍历,找到最大的连续子串,使得子串中的每个字符都小于或等于 s[p]。这个子串就是需要循环左移的部分。
-
构造结果字符串:将子串的第一个字符移到子串末尾,然后按顺序输出其余部分。
【难度】
GESP五级
【代码参考】
#include<bits/stdc++.h>
using namespace std; int main(){ string s;int t;cin >> t;while(t--){int i, p, n;cin >> n >> s;// 寻找第一个递减位置pfor(i = 0; i < n-1; i++){if(s[i] > s[i+1]) break;cout << s[i]; // 输出递增部分}p = i;// 如果字符串完全递增,直接输出并处理下一个测试用例if(p == n-1){cout << endl;continue;} // 寻找从p+1开始的最大连续子串,其中每个字符都<=s[p]for(i = p + 1; i < n; i++){if(s[i] > s[p]) break;else cout << s[i]; // 输出子串中<=s[p]的部分}// 输出被移到最后的字符s[p]cout << s[p];// 输出剩余部分for(; i < n; i++){cout << s[i];}cout << endl;}return 0;
}
E Pair Annihilation
【题目链接】
原题链接:E - Pair Annihilation
【考点】
深度优先搜索dfs,树
【题目大意】
这道题要求在树结构中计算正电子和电子湮灭的最小能量。
【解析】
关键在于利用树的特性,通过后序遍历(DFS)从叶子节点向根节点合并粒子,确保每个粒子的移动路径最短,从而最小化总能量消耗。
- 树的特性:树是无环连通图,粒子只能通过边在节点间移动,最短路径唯一。
- 后序遍历合并粒子:从叶子节点开始,将每个子树的粒子数合并到父节点。粒子移动时,消耗的能量为边权乘以粒子数的绝对值(绝对值代表粒子数量,正负代表类型)。
- 能量累加:在遍历过程中,累加每条边因移动粒子而消耗的能量。由于总和为零,最终根节点的粒子数必为零,所有粒子在移动过程中湮灭。
【难度】
GESP六级
【代码参考】
#include<bits/stdc++.h>
using namespace std; const int N = 1e5 + 5;
struct node{int v;long long w;
};
long long ans, a[N]; // ans存储总能量,a数组存储各节点粒子数
int n, u;
vector<node> tree[N]; // 邻接表存储树结构// 深度优先搜索,fa为父节点,x为当前节点
void dfs(int fa, int x){for(auto v : tree[x]){ // 遍历当前节点的所有邻接节点if(v.v == fa) continue; // 跳过父节点,避免回退dfs(x, v.v); // 递归处理子节点// 累加移动子节点v.v的粒子到当前节点x的能量ans += v.w * abs(a[v.v]);// 合并子节点的粒子数到当前节点a[x] += a[v.v];}
}int main(){ cin >> n;for(int i = 0; i < n; i++) cin >> a[i];for(int i = 1; i < n; i++){node vl;cin >> u >> vl.v >> vl.w;u--, vl.v--;tree[u].push_back(vl); // 添加双向边swap(u, vl.v); // 交换顶点,添加反向边tree[u].push_back(vl);}dfs(-1, 0); // 从根节点0开始遍历,父节点设为-1(无效值)cout << ans; // 输出最小总能量return 0;
}
相关文章:
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...