news 2026/11/2 2:30:59

Div.3 CF 1131A题(排序,模拟)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Div.3 CF 1131A题(排序,模拟)

题目链接:https://codeforces.com/contest/2278/problem/A

题目大意:给两个字符串 `p` 和 `q`,分别表示分子和分母中变量的乘积,每个字符代表一个变量。变量可以任意重排,分子和分母中相同的字符可以一一抵消。判断经过抵消后,分子剩余变量能否恰好组成字符串 `six`,并且分母必须为空。

题目思路:由于最终分子只有six,分母为空,我们可以先判断字符串p的长度-字符串q的长度是否为3,如果不为3则一定不可能会有six,否则我们可以判断s,i,x是否存在并记录位置,然后定义一个字符串t来存储除了s,i,x这三个字符的p字符串,最后比较t,q字符串的长度,如果不等也不合法,相等的话,则挨个比较字符,如果不同则不合法经过上述所有操作后则一定yes

时间复杂度:O(T*nlogn)

代码如下:

#include <bits/stdc++.h> using namespace std; #define endl "\n" using ll = long long; using ld = long double; /* https://codeforces.com/contest/2278/problem/A Div.3 CF 1131A题(排序,模拟) 题目大意:给两个字符串 `p` 和 `q`,分别表示分子和分母中变量的乘积,每个字符代表一个变量。 变量可以任意重排,分子和分母中相同的字符可以一一抵消。判断经过抵消后,分子剩余变量能否恰好组成字符串 `six`,并且分母必须为空。 题目思路:由于最终分子只有six,分母为空,我们可以先判断字符串p的长度-字符串q的长度是否为3, 如果不为3则一定不可能会有six,否则我们可以判断s,i,x是否存在并记录位置, 然后定义一个字符串t来存储除了s,i,x这三个字符的p字符串,最后比较t,q字符串的长度,如果不等也不合法,相等的话,则挨个比较字符,如果不同则不合法 经过上述所有操作后则一定yes 时间复杂度:O(T*nlogn) */ void solve() { int n, m; cin >> n >> m; string s1, s2; cin >> s1 >> s2; if (n - m != 3)//最终分子长度一定为3 { cout << "NO" << endl; return; } bool s = false, i = false, x = false;//判断six是否存在 int s_pos = -1, i_pos = -1, x_pos = -1;//记录six位置 for (int j = 0; j < n; j++) { if (s1[j] == 's') { s = true; s_pos = j; } else if (s1[j] == 'i') { i = true; i_pos = j; } else if (s1[j] == 'x') { x = true; x_pos = j; } } if (s && i && x)//如果six存在 { string t; //存储除了s,i,x这三个字符的p字符串 for (int j = 0; j < n; j++) { if (j == s_pos || j == i_pos || j == x_pos)//如果遇到six就跳过 { continue; } t += s1[j]; } if ((int)t.size() != m)//长度不等也不合法 { cout << "NO" << endl; } else { sort(t.begin(), t.end());//排序方便比较 sort(s2.begin(), s2.end()); for (int j = 0; j < m; j++) { if (t[j] != s2[j])//遇到不同就退出 { cout << "NO" << endl; return; } } cout << "YES" << endl;//经过上面所有操作后,那么一定是可以yes的 } } else//six不存在就直接输出no { cout << "NO" << endl; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while (T--) { solve(); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 2:30:31

归并排序算法原理与多语言实现优化

1. 归并排序算法概述归并排序&#xff08;Merge Sort&#xff09;是一种典型的分治算法&#xff0c;由约翰冯诺伊曼在1945年首次提出。这个算法将数组分成两半&#xff0c;分别排序后再合并&#xff0c;其时间复杂度稳定在O(n log n)&#xff0c;这使得它成为处理大规模数据时的…

作者头像 李华
网站建设 2026/11/2 2:30:30

前端工程动态配置方案:告别传统.env文件

1. 为什么前端工程需要告别传统.env配置三年前接手一个企业级SaaS项目时&#xff0c;我还在使用最原始的.env文件管理环境变量。直到某天凌晨两点&#xff0c;生产环境突然崩溃——原因是运维同学误将本地开发的.env文件打包到了生产镜像。这个事件让我彻底意识到&#xff1a;在…

作者头像 李华
网站建设 2026/11/2 2:30:29

2026网络安全学习路线:从基础到实战

1. 网络安全学习路线概述2026年的网络安全领域正经历着前所未有的变革与发展。作为一名从业十余年的安全工程师&#xff0c;我见证了网络安全从边缘学科成长为数字化时代的核心防御体系的全过程。这份学习路线是我根据当前行业技术发展趋势和用人需求精心设计的&#xff0c;旨在…

作者头像 李华
网站建设 2026/11/2 2:29:43

OpenViking:AI代理开源上下文数据库系统解析

1. OpenViking 项目概述OpenViking 是一款专为 AI 代理设计的开源上下文数据库系统&#xff0c;由火山引擎团队开发维护。这个项目创造性地采用"文件系统范式"来统一管理 AI 代理所需的各种上下文数据&#xff0c;包括记忆、资源和技能等。最新版本&#xff08;0.4.7…

作者头像 李华
网站建设 2026/11/2 2:29:32

Graph-RAG:知识图谱增强的大模型精准检索技术

1. Graph-RAG&#xff1a;大模型时代的精准知识引擎第一次听说Graph-RAG时&#xff0c;我正在处理一个医疗问答系统的检索优化问题。传统RAG就像在图书馆里盲目翻书&#xff0c;而Graph-RAG则像有位专业图书管理员帮你精准定位——这正是当下大模型应用开发最需要的技术突破。这…

作者头像 李华
网站建设 2026/11/2 2:28:53

从扫地机器人解析智能体技术演进与AGI差距

1. 从扫地机器人看智能技术演进上周家里那台扫地机器人又犯傻了&#xff0c;明明餐桌腿就在那里&#xff0c;它非要撞上去三次才绕开。这种让人哭笑不得的场景&#xff0c;反而让我突然想明白了一个问题&#xff1a;现在整天被讨论的智能体&#xff08;Agent&#xff09;、AIGC…

作者头像 李华