Educational Codeforces Round 163 (Rated for Div. 2)

在这里插入图片描述

Educational Codeforces Round 163 (Rated for Div. 2)

Educational Codeforces Round 163 (Rated for Div. 2)

A. Special Characters

题意:

给出特殊字符的定义,在一组字符串中当前字符的相邻字符有且仅有一个与自身相同的字符,找出具有n个特殊字符的字符串。

思路:

符合条件的字符串一定是成对出现的,所以奇数量特殊字符不可能,然后叠加出现一对特殊字符的情况即可。

AC code:

void solve() {cin >> n;if (n & 1) {cout << "NO" << endl;return;}cout << "YES" << endl;for (int i = 0; i < n / 2; i ++) {cout << "BBA";}cout << endl;
}

B. Array Fix

题意;

对于长度为n的序列a,可以对大于10的元素进行拆分,然后按原顺序插入序列中,是否可能通过这种操作使得序列非递减。

思路:

找到最靠后的一个不符合条件的元素,只有拆分操作有可能使得序列非递减,其之前的元素若大于10均需要拆分操作;

注意,若拆分前十进制整数ab中,a>b,则不可以进行拆分,否则拆分后插入原序列会导致序列无法达到非递减;

将操作后的序列进行二次判断,看是否是非递减。

AC code:

void solve() {cin >> n;vector<int> a(n);int f = 0;for (int i = 0; i < n; i ++) {cin >> a[i];}int pos = -1;for (int i = 0; i < n - 1; i ++) {if (a[i] > a[i + 1]) {pos = i;} } if (pos == -1) {cout << "YES" << endl;return;}vector<int> c;for (int i = 0; i <= pos; i ++) {int t = a[i];if (t < 10) c.pb(a[i]);else {int x = t / 10, y = t % 10;if (x <= y) c.pb(x), c.pb(y);else c.pb(t);}} for (int i = pos + 1; i < n; i ++) c.pb(a[i]);for (int i = 1; i < c.size(); i ++) {//cout << c[i] << ' ';if (c[i] < c[i - 1]) {cout << "NO" << endl;return;}}cout << "YES" << endl;
}

C. Arrow Path

题意:

走迷宫,二进制字符串迷宫,每次有两次移动,第一次可以任意选择上下左右进行移动,第二次则根据第一次移动到的位置的字符判断是向左还是向右移动,第二次移动一定要有且与字符指向相同;

是否可以从(1, 1)走到(2, n)。

思路:

BFS直接按照题目要求走一遍,看是否能到达终点即可。

AC code:

void solve() {cin >> n;cin >> g[0] >> g[1];map<PII, int> st;queue<PII> q;q.push({0, 0});st[{0, 0}] = 1;int f[5] = {1, 0, -1, 0, 1};while (!q.empty()) {auto [i, j] = q.front();q.pop();for (int t = 0; t < 4; t ++) {int x = i + f[t], y = j + f[t + 1];if (x >= 0 && x < 2 && y >= 0 && y < n && !st[{x, y}]) {st[{x, y}] = 1;if (g[x][y] == '>' && !st[{x, y + 1}]) {st[{x, y + 1}] = 1;q.push({x, y + 1});} if (g[x][y] == '<' && !st[{x, y - 1}]) {st[{x, y - 1}] = 1;q.push({x, y - 1});} }}}if (st[{1, n - 1}]) cout << "YES" << endl;else cout << "NO" << endl;
}

D. Tandem Repeats?

题意:

给出由小写字母以及’?'组成的字符串,找出最长的串联字符子串(前半部分等于后半部分的字符串)。

思路:

首先是暴力枚举,找出所有可能长度的子串进行判断,O(n^3),会爆;

优化方案:

O(n^2)找出可能长度的子串,再单独判断该长度下符合条件的最长连续子串。

枚举的分别是可能串联子串折半的长度以及当前开始的位置,若对应位置子串相同或其一为’?'则当前字符符合串联条件。

AC code:

void solve() {cin >> s;n = s.size();int ans = 0;for (int i = 1; i <= n / 2; i ++) {vector<int> cnt;for (int j = 0; j < n; j ++) {if (i + j < n && (s[j] == s[j + i] || s[j] == '?' || s[j + i] == '?')) {cnt.pb(j);}}int t = 1;for (int x = 0; x < cnt.size(); x ++) {if (x == 0) t = 1;else if (cnt[x] == cnt[x - 1] + 1) t ++;else t = 1;//cout << t << " " << i << "++" << endl;if (t == i) {ans = max(ans, t * 2);}}}cout << ans << endl;
}

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

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

相关文章

webshell隐藏哥斯拉流量修改sqlmap改ua

webshell隐藏 windows 1.隐藏shell attrib "文件名" s h attrib "文件名" -s -h 2.利用系统代号隐藏shell 创建文件夹名为Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}&#xff0c;此时文件夹将变成我的电脑&#xff0c;无法看到里面的东西&…

Window部署AgileConfig

AgileConfig&#xff1a;分布式配置中心 github&#xff1a;GitHub - dotnetcore/AgileConfig: 基于.NET Core开发的轻量级分布式配置中心 / .NET Core lightweight configuration server 下载部署包&#xff1a;Releases dotnetcore/AgileConfig GitHub 版本&#xff1a;…

操作系统_Win+R运行cmd的一些常用命令(用到整理)

操作系统_WinR运行cmd的一些常用命令&#xff08;用到整理&#xff09; Win R运行命令cmd启动命令提示符&#xff1a; 1. devmgmt.msc——设备管理器 2. msinfo32-系统信息 3. mstsc-远程操作 4. ftp-进入文件型服务器&#xff0c;输入命令&#xff1a; ftp ip&#xff0c;登…

【大模型系列】统一图文理解与生成(BLIP/BLIPv2/InstructBLIP)

文章目录 1 BLIP(2022, Salesforce Research)1.1 简介1.2 数据角度1.3 模型角度1.4 BLIP预训练的目标 2 BLIP2(ICML2023, Salesforce)2.1 简介2.2 模型架构2.3 训练细节 3 InstructBLIP(2023, Salesforce)3.1 指令微调技术(Instruction-tuning)3.2 数据集准备3.3 Instruction-a…

linux ffmpeg编译

下载源码 https://ffmpeg.org/ csdn下载源码包 不想编译可以直接下载使用静态版本 https://ffmpeg.org/download.html https://johnvansickle.com/ffmpeg/ 根据cpu类型&#xff0c;下载解压后就可以直接使用了。 linux编译 安装底层依赖 yum install gcc yum isntall …

VXLAN学习笔记

声明&#xff1a;该博客内容大部分参考参考链接整理 什么是VXLAN&#xff1f; VXLAN(Virtual Extensible LAN)即虚拟扩展局域网&#xff0c;是大二层网络中广泛使用的网络虚拟化技术。在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道&#xff0c;采用MAC in UDP的封装方…

在Linux下安装和使用MySQL 看这篇文章就够了 mysql在ubuntu22下安装使用教程

第一步&#xff0c;在Linux上装MySQL数据库 首先&#xff0c;确保Ubuntu保持网络通畅 两种设置方式 方法一、设置-》网络-》连接方式-》网络地址转换(NAT) ​ 方法二、设置-》网络-》连接方式-》桥接 选择正确的网卡 右下角这里有个网络图标 也可以进行设置 2、更新软件源…

JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)

本文主要介绍JDK8和JDK11在Ubuntu18上切换&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人…

【Docker篇】数据卷相关操作

文章目录 &#x1f388;前言&#x1f354;数据卷&#x1f6f8;操作命令⭐创建一个数据卷&#xff0c;并查看数据卷在宿主机的目录位置 &#x1f339;挂载数据卷 &#x1f388;前言 在前面文章的nginx案例中&#xff0c;修改nginx的html页面时&#xff0c;需要进入nginx内部。并…

Vue 3 + TypeScript 项目中全局挂载并使用工具函数

一、proxy方式 1.封装日期选择工具函数&#xff1a; 在untils文件夹下新建index.ts,并导出工具函数 /*** 获取不同类型日期* param&#xff1a;类型 dateVal: 是否指定*/ export function getSystemDate(param: any, dateVal: any) {let systemDate dateVal ? new Date(da…

BlenderGIS 快捷键E 报错问题 Report: Error

最新版的Blender4.0 对于 BlenderGIS2.28版本的插件不兼容&#xff0c;BlenderGIS2.28兼容Blender3.6.9及之前的版本&#xff0c;应该是BlenderGIS插件很久没更新了导致的。

手撕算法-对称二叉树

力扣101. 对称二叉树 链接 https://leetcode.cn/problems/symmetric-tree/description/ 题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。示例1&#xff1a;此树是对称的。示例2&#xff1a;此树也是对称的示例3&#xff1a;此树不对称 思路 一颗…