Educational Codeforces Round 166(Div.2) A~D

A.Verify Password(字符串)

题意:

Monocarp正在开发他的新网站,目前面临的挑战是如何让用户选择强密码。

Monocarp认为,强密码应满足以下条件:

  • 密码只能由小写拉丁字母和数字组成;
  • 字母后面不能有数字(因此,每个字母后面要么有另一个字母,要么字符串结束);
  • 所有数字应按非递减顺序排序;
  • 所有字母应按非递减顺序排序。

请注意,密码可以只有字母或数字。

Monocarp成功地实现了第一个条件,但他在其余条件上很吃力。您能帮他验证密码吗?

分析:

按照 A S C I I ASCII ASCII值进行比较(因为字母的 A S C I I ASCII ASCII本来就在数字后面)。只要找到前面比后面的数大就输出 N O NO NO,反之 Y E S YES YES

代码:

#include<bits/stdc++.h>
using namespace std;void solve(){int n;cin>>n;string s;cin>>s;bool flag = true;for (int i = 1; i < n; i++){if (isalpha(s[i - 1]) && isdigit(s[i])){flag = false;break;}if(s[i - 1] > s[i]){flag = false;break;}}if(flag)cout<<"YES"<<endl;elsecout<<"NO"<<endl;
}int main(){int t;cin>>t;while(t--){solve();}return 0;
}

B.Increase/Decrease/Copy(思维)

题意:

给你两个整数数组:长度为 n n n的数组 a a a和长度为 n + 1 n+1 n+1的数组 b b b

你可以按任意顺序执行下列操作任意次数:

  • 选择数组 a a a中的任意元素,并将其增加 1 1 1
  • 选择数组 a a a中的任意元素,并将其减少 1 1 1
  • 选择数组 a a a中的任意元素,复制并追加到数组 a a a的末尾。

你的任务是计算将数组 a a a转换为数组 b b b所需的最少上述操作次数(可能为零)。可以证明,在问题的限制条件下,这总是可能的。

分析:

对于 a i − > b i , 1 ≤ i ≤ n a_i->b_i,1\le i\le n ai>bi,1in,转变的最小代价就是它们的差值。

对于 b n + 1 b_{n+1} bn+1,得到它的最小代价就是 a i − > b i a_i->b_i ai>bi过程中与它最小的差值 + 1 +1 +1

代码:

#include<bits/stdc++.h>typedef long long LL;
using namespace std;
#define INF 0x7fffffffvoid solve() {int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}vector<int> b(n + 1);for (int i = 0; i < n + 1; i++) {cin >> b[i];}int need = INF;LL ans = 0;for (int i = 0; i < n; i++) {ans += abs(b[i] - a[i]);need = min(need, abs(b[n] - b[i]));need = min(need, abs(b[n] - a[i]));if (a[i] < b[n] && b[n] < b[i] || a[i] > b[n] && b[n] > b[i])need = 0;}cout << ans + need + 1 << endl;
}int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

C.Job Interview(枚举)

题意:

Monocarp打算开一家自己的IT公司。他想招聘 n n n名程序员和 m m m名测试员。

n + m + 1 n+m+1 n+m+1名候选人,按到达时间顺序从 1 1 1 n + m + 1 n+m+1 n+m+1依次编号。第 i i i个候选人的编程技能为 a i a_i ai,测试技能为 b i b_i bi(一个人的编程技能和测试技能是不同的)。团队的技能是所有被聘为程序员的候选人的编程技能之和,以及所有被聘为测试员的候选人的测试技能之和。

当应聘者前来面试时,Monocarp会尝试将其分配到最适合的职位(如果应聘者的编程技能较高,则录用其为程序员,否则录用其为测试员)。如果该职位的所有名额都已招满,Monocarp就会将他们分配到其他职位。

你的任务是,针对每个候选人,计算如果除他们之外的所有人都来面试,团队的技能。请注意,这意味着正好有 n + m n+m n+m名候选人来参加面试,因此公司的所有 n + m n+m n+m个职位都将被填满。

分析:

从前往后遍历,检查一下是 a a a能力值浪费了还是 b b b能力值浪费了,然后从后往前枚举,开一个数组维护一下最近后缀损失能力值。输出答案的时候,如果当前的人的站的职位刚好是能力值被浪费的职位,输出总和减去当前的人的能力值加上最近损失能力值。

代码:

#include<bits/stdc++.h>typedef long long LL;
using namespace std;
const LL N = 1e6 + 10;
LL q[N], p[N], a[N], b[N];void solve() {LL n, m;cin >> n >> m;LL sum1, sum2, num1, num2, f;sum1 = sum2 = num1 = num2 = f = 0;for (int i = 0; i <= n + m; i++) {cin >> a[i];q[i] = p[i] = 0;}for (int i = 0; i <= n + m; i++) {cin >> b[i];f += a[i] > b[i];if (a[i] > b[i] && num1 <= n || m == i - num1) {num1++;sum1 += a[i];p[i] = 1;} elsesum1 += b[i];if (a[i] < b[i] && num2 <= m || n == i - num2) {num2++;sum2 += b[i];q[i] = 1;} elsesum2 += a[i];}for (int i = 0; i <= n + m; i++) {cout << " ";cout << (f > n ? (p[i] ? sum1 - a[i] : sum2 - b[i]) : (q[i] ? sum2 - b[i] : sum1 - a[i]));}
}int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

D.Invertible Bracket Sequences(前缀和、双指针)

题意:

正则括号序列是指可以通过在序列的原始字符之间插入字符"1"和"+"来转换成正确算术表达式的括号序列。例如

  • 括号序列"()()“和”(())“是正则表达式(得到的表达式是”(1)+(1)“和”((1+1)+1)");
  • 括号序列")(“、”(“和”)"则不是。

让我们定义括号序列的逆序如下:用’)‘替换所有括号’(‘,反之亦然(用’(‘替换所有括号’)')。例如,字符串"()((“和”)())"互为反义词。

给你一个正则括号序列 s s s。计算如果将 s s s中从第 l l l个字符到第 r r r个字符(包括)的子串 s s s替换为其逆序数, s s s仍然是正则括号序列的整数对 ( l , r ) (l,r) (l,r)( 1 ≤ l ≤ r ≤ ∣ s ∣ 1\le l\le r\le|s| 1lrs)的个数。

分析:

统计序列前 i i i个有多少个左括号是剩余的,然后思考 ( l , r ) (l,r) (l,r)的选择有何特征:可以发现,若第 i i i位之前所剩余的左括号跟第 j j j位之前所剩余的左括号数量一样,那么 ( i + 1 , j ) (i+1,j) (i+1,j)这个区间就可能被选择,否则一定不会被选择。

因此我们将剩余左括号数量相同的位置放一起,然后考虑其区间能否真的被选中。通过观察可以发现:若 ( i , j ) (i,j) (i,j)之间位置的剩余左括号数量小于等于第 i i i位之前所剩余的左括号的两倍,那么这个区间就可以被选中,因此本题转换成 R M Q RMQ RMQ问题。

在枚举位置时,随着起始位置的增大,末尾位置也一定是非递减的,因此用双指针可以将复杂度从 O ( n 2 l o g n ) O(n^{2}logn) O(n2logn)变为 O ( n l o g n ) O(nlogn) O(nlogn)

代码:

#include <bits/stdc++.h>using namespace std;
typedef long long LL;
const LL N = 5e05 + 10;LL n;
vector<LL> a(N, 0);LL Max[N][21];
LL Min[N][21];struct ST {void init() {for (LL i = 1; i <= n; i++) {Max[i][0] = a[i];Min[i][0] = a[i];}}void work() {for (LL j = 1; j <= 21; j++)for (LL i = 1; i + (1 << j) - 1 <= n; i++) {Max[i][j] = max(Max[i][j - 1], Max[i + (1 << (j - 1))][j - 1]);Min[i][j] = min(Min[i][j - 1], Min[i + (1 << (j - 1))][j - 1]);}}LL QueryMax(LL l, LL r) {LL k = log2(r - l + 1);return max(Max[l][k], Max[r - (1 << k) + 1][k]);}LL QueryMin(LL l, LL r) {LL k = log2(r - l + 1);return min(Min[l][k], Min[r - (1 << k) + 1][k]);}
};void solve() {string s;cin >> s;s = "0" + s;LL len = s.size();n = len + 5;a[0] = 0;vector<LL> st[len];for (LL i = 1; i < len; i++) {if (s[i] == '(') {a[i] = a[i - 1] + 1;} else {a[i] = a[i - 1] - 1;}st[a[i]].push_back(i);}ST st1;st1.init();st1.work();LL cnt = 0;for (LL i = 1; i < len; i++) {if (st[i].size() <= 1)continue;LL len = st[i].size();LL r = 0;for (LL l = 0; l < len; l++) {if (r == len) {cnt += (r - l - 1);continue;}LL left = st[i][l];LL right = st[i][r];while (r < len && st1.QueryMax(left, right) <= i * 2) {r++;if (r == len) {break;}right = st[i][r];}cnt += (r - l - 1);}}cout << cnt << endl;
}int main() {LL t;cin >> t;while (t--) {solve();}return 0;
}

赛后交流

在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。

群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PasteCode系列系统说明

定义 PasteCode系列是指项目是基于PasteTemplate构建的五层以上项目&#xff0c;包括不仅限于 Domain EntityFrameworkCore Application.Contracts Application HttpApi.Host 熟悉ABP vNext就很好理解了&#xff0c;因为PasteTemplate就是基于ABP的框架精简而来&#xff01;在…

代码随想录算法训练营第四十六 | ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

139.单词拆分 视频讲解&#xff1a;https://www.bilibili.com/video/BV1pd4y147Rh https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<st…

上市即交付,比亚迪秦L DM-i万人交车暨千媒众测开营

6月6日&#xff0c;“引领中级 开创油耗2时代”秦L DM-i万人交车暨千媒众测开营仪式在比亚迪大本营深圳盛大举行。 众多车主代表亲临现场&#xff0c;与全国各地的比亚迪4S店千店联动&#xff0c;将秦L DM-i全国交付推向新的高潮。发布即量产&#xff0c;上市即交付&#xff0…

ESP32:FreeRTOS节拍配置(vTaskDelay延时10ms改为1ms)

文章目录 背景方法手动修改sdkconfig通过idf.py menuconfig 背景 在FreeRTOS的默认配置中&#xff0c;任务调度的频率默认是100HZ&#xff0c;因此默认vTaskDelay默认延时是10ms。 FreeRTOS 的系统时钟节拍可以在配置文件 FreeRTOSConfig.h 里面设置&#xff1a;#define confi…

【AI基础】第四步:保姆喂饭级-langchain+chatglm2-6b+m3e-base

在第三步手动安装chatglm2-6b时&#xff0c;已经可以通过web进行交互。langchain重新封装了一下AI框架&#xff0c;提供更加友好的开发功能&#xff0c;类似于AI届的spring框架。langchain的安装过程也类似于上一步说的&#xff1a;【AI基础】第三步&#xff1a;纯天然手动安装…

企业获客有哪些好的广告推广拓客渠道?

在这个数字化营销的时代&#xff0c;企业要想在激烈的市场竞争中脱颖而出&#xff0c;选择正确的广告宣传渠道至关重要。随着互联网技术的飞速发展&#xff0c;各类媒体平台如雨后春笋般涌现&#xff0c;为企业提供了广阔的宣传空间。云衔科技通过多元化的媒体渠道&#xff0c;…

485数据采集模块

在工业自动化与智能化的浪潮中&#xff0c;数据采集作为整个系统的基础和核心&#xff0c;其准确性和实时性直接关系到生产效率和产品质量。而485数据采集模块&#xff0c;作为连接现场设备与上位机的重要桥梁&#xff0c;其性能与稳定性对于整个系统的运行至关重要。HiWoo Box…

【AIGC X UML 落地】通过多智能体实现自然语言绘制UML图

前天写了篇博文讲到用PlantUML来绘制C类图和流程图。后台有读者留言&#xff0c;问这步能否自动化生成&#xff0c;不想学习 PlantUML 语法。 我想了下&#xff0c;发现这事可行&#xff0c;确实可以做到通过自然语言的描述就能实现 UML图的绘制&#xff0c;昨天晚上加了个班到…

在线标注流程

文章目录 在线标注流程标注方法 在线标注流程 登录地址&#xff1a;http://7a27c5e078f644a2a9b734603913c65e.login.bce.baidu.com 出现页面&#xff1a; 登录名&#xff1a; 三个中任意一个 密码&#xff1a;ZNSJ123a 登录之后叉掉。再打开这个网站&#xff1a;https://…

【ZYNQ】CPU 私有定时器

Zynq 的每个 Cortex-A9 处理器都有自己的专用 32 位定时器和 32 位看门狗定时器&#xff0c;两个处理器共享一个全局 64 位定时器&#xff0c;这些计时器的时钟频率始终为 CPU 频率的 1/2。本文主要介绍 Zynq 芯片 CPU 私有定时器的工作特性&#xff0c;以及私有定时器的基本使…

【问题复盘】第三方接口变慢导致服务崩溃

一、事件经过 -1、一个不在公司的下午&#xff0c;接到客户投诉&#xff0c;说平台不能访问了。 0、介入调查&#xff0c;发现服务器http请求无法访问&#xff0c;https请求却可以正常访问&#xff0c;一时有些无法理解&#xff1b;&#xff08;后来发现&#xff0c;http和htt…

网络编程(八)

网络编程&#xff08;八&#xff09; 数据库数据库的分类基于嵌入式的数据库什么是SQLite?为什么使用SQLite?sqlite3数据库的安装 sqlite3中的点命令.open 数据库文件名字.tables [数据库文件名].schema 表名.database.quit.head on.mode column SQLite数据库中的数据类型SQL…

《混凝土坝安全监测资料整编规程》的深入解读与实际应用

在水利工程中&#xff0c;混凝土坝作为重要的建筑物&#xff0c;其安全监测工作至关重要。为了确保监测工作的准确性和有效性&#xff0c;制定一套规范的混凝土坝安全监测资料整编规程显得尤为重要。本文将对《混凝土坝安全监测资料整编规程》进行深入解读&#xff0c;并探讨其…

泛型基础及深入

泛型深入 泛型定义&#xff1a; JDK5引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查 泛型格式&#xff1a; <数据类型> 注意&#xff1a;泛型只能支持引用数据类型 优势&#xff1a; 统一数据类型&#xff1b; 把运行时期的问题提前到…

快速排序(Quick Sort)(C语言) 超详细解析!!!

生活的本质是什么呢? 无非就是你要什么就不给你什么. 而生活的智慧是什么呢? 是给你什么就用好什么. ---马斯克 索引 一. 前言二. 快速排序的概念三. 快速排序的实现1. hoare2. 挖坑法3. 前后指针法 总结 正文开始 一. 前言 接上文, 前面我们了解了插入排序, 与优化版本希尔…

HQL面试题练习 —— 向用户推荐好友喜欢的音乐

目录 1 题目2 建表语句3 题解 题目来源&#xff1a;腾讯。 1 题目 现有三张表分别为&#xff1a; 用户关注表 t_follow(user_id,follower_id)记录用户ID及其关注的人ID&#xff0c;请给用户1 推荐他关注的用户喜欢的音乐名称 ------------------------ | user_id | follower…

六月可以闭眼入的宠物空气净化器:希喂、安德迈、霍尼韦尔真实PK

俗话说得好&#xff0c;猫咪一年到头都在掉毛&#xff0c;仿佛它们是四季常在的"蒲公英"&#xff0c;随时随地都在播撒毛发。猫毛不仅遍布它们自己的身体&#xff0c;还可能飘到你的床铺、沙发、衣物上……面对这样的状况&#xff0c;既要应对无处不在的猫毛&#xf…

基于卷积神经网络(CNN)的垃圾分类模型研究

摘要&#xff1a; 随着城市化进程的加快&#xff0c;垃圾问题日益严重。传统的垃圾分类方法存在效率低下、准确率不高等问题。本文提出了一种基于卷积神经网络&#xff08;CNN&#xff09;的垃圾分类模型&#xff0c;该模型能够自动识别并分类不同类型的垃圾。实验表明&#xf…

Kruskal算法求最小生成树

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #define MAX 100 #define NO INT_MAX//NO表示没有边&#xff0c;相当于INFtypedef struct Graph {int arcnum;int vexnum;char vextex[MAX][20];int martrix[MAX][MA…

什么无线领夹麦克风音质最好?领夹麦克风品牌排行榜前十名推荐

​在当今的数字化浪潮中&#xff0c;个人声音的传播和记录变得尤为重要。无论是会议中心、教室讲台还是户外探险&#xff0c;无线领夹麦克风以其卓越的便携性和连接稳定性&#xff0c;成为了人们沟通和表达的首选工具。面对市场上琳琅满目的无线麦克风选择&#xff0c;为了帮助…