Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)
A. Was there an Array?
翻译:
对于整数数组
,我们将其相等特征定义为数组
,其中,如果数组 a 的第 i 个元素等于其两个相邻元素,则
;如果数组 a 的第 i 个元素不等于其至少一个相邻元素,则
。
例如,对于数组 [1,2,2,2,3,3,4,4,4],相等特征为 [0,1,0,0,0,0,1,1]。
给你数组
。你的任务是确定是否存在这样一个数组 a具有相同特征。
思路:
如果b存在101则错误。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){int n; cin>>n;vector<int>b(n-2);for (int i=0;i<n-2;i++) cin>>b[i];if (n<=4){cout<<"YES"<<endl;}else{for (int i=0;i<n-4;i++){if (b[i]==1 && b[i+1]==0 && b[i+2]==1){cout<<"NO"<<endl;return;}}cout<<"YES"<<endl;}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();ll t;cin>>t;while (t--) solve();
}
B. Set of Strangers
翻译:
给你一张 n 行 m 列的表格。最初,第 i 行第 j 列的单元格的颜色为
。
如果两个单元格不共用一条边,那么这两个单元格就是陌生人。陌生人可以用角接触。
如果单元格集合中的所有单元格对都是陌生人,我们就说这个单元格集合是陌生人集合。根据定义,不超过一个单元格的集合就是陌生人集合。
在一个步骤中,你可以选择任意一个陌生人集合,使其中的所有单元格都具有相同的颜色,然后给所有单元格涂上其他颜色。你可以选择得到的颜色。
要使整个表格的颜色相同,最少需要多少步?
思路:
对于所有相同颜色的块,如果存在相邻的块,则要2次操作使所有块变为同一颜色,否则只用1次操作。
得到所有颜色的变换操作数,再减去所有颜色转换操作数中的最大值。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
vector<vector<int>> direct = {{0,1},{0,-1},{1,0},{-1,0}};
void solve(){int n,m; cin>>n>>m;vector<int> cnts(n*m+1,0);vector<vector<int>> graph(n+2,vector<int>(m+2,0));for (int i=1;i<=n;i++){for (int j=1;j<=m;j++){cin>>graph[i][j];}}int mx = 0,summ = 0;for (int i=1;i<=n;i++){for (int j=1;j<=m;j++){int f = 0;for (auto d:direct){if (graph[i][j]==graph[i+d[0]][j+d[1]]){f = 1;break;}}cnts[graph[i][j]] = max(1+f,cnts[graph[i][j]]);}}for (int i=1;i<=n*m;i++){summ+=cnts[i];mx = max(mx,cnts[i]);}cout<<summ-mx<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();ll t;cin>>t;while (t--) solve();
}
C. Beautiful Sequence
翻译:
如果下列条件成立,我们就称一个整数序列为优美序列:
- 它的长度至少为 3;
- 除第一个元素外,每个元素的左边都有一个比它小的元素;
- 除最后一个元素外,每个元素的右边都有一个比它大的元素;
例如,[1,4,2,4,7] 和 [1,2,4,8] 很美,但 [1,2]、[2,2,4] 和 [1,3,5,3] 却不美。
回想一下,子序列是指在不改变其余元素顺序的情况下,通过删除某些元素可以从另一个序列得到的序列。
给你一个大小为 n 的整数数组 a,其中每个元素都是从 1 到 3。你的任务是计算数组 a 的优美子序列的个数。
思路:
按照条件优美序列为122...23。求满足条件的序列数量。使用dp状态机。
dfs( i , k ) 为[ : i ]中以k为结尾的序列数量。
递推公式:
dfs( i , k) = dfs( i-1 , k);
当k==3时,如果a[i]==3,则当前3与前面的2结尾数字匹配 dfs(i , k)+=dfs(i-1 , 2)
当k==2时,如果a[i]==2,则当前2与前面的1或2结尾数字匹配 dfs(i , k) += dfs(i-1 , 1)
当k==1时,如果a[i]==1,1开头的数量+1 dfs( i , k )++;
边界条件:
if (i<0) return 0;
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 998244353;
void solve(){ll n; cin>>n;vector<ll> a(n);for (ll i=0;i<n;i++) cin>>a[i];vector<vector<ll>> memo(n,vector<ll>(4,-1));// dp状态机:[:i] 中以 k 结尾的 子串数量auto dfs = [&](auto&& dfs,ll i,ll k)->ll{if (i<0) return 0;ll &res = memo[i][k];if (res!=-1) return res;res = dfs(dfs,i-1,k);if (k==3 && a[i]==3){res = (res+dfs(dfs,i-1,2))%mod;}else if (k==2 && a[i]==2){res = (res+dfs(dfs,i-1,2)+dfs(dfs,i-1,1))%mod;}else if (k==1 && a[i]==1){res += 1;}return res;};cout<<dfs(dfs,n-1,3)<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();ll t;cin>>t;while (t--) solve();
}
D. Palindrome Shuffle
翻译:
给你一个由小写拉丁字母组成的字符串 s。
您可以对字符串 s 执行以下操作:选择 s 的一个连续子串(可能为空),然后将其洗码(按您的意愿重新排列子串中的字符)。
回顾一下,回文字符串是指从第一个字符到最后一个字符以及从最后一个字符到第一个字符的读法相同的字符串。例如,字符串 a、bab、acca、bcabcbacb 是回文字符串,但字符串 ab、abbbaa、ccbb 不是回文字符串。
您的任务是确定子串的最小可能长度,必须在该子串上执行上述操作才能将给定的字符串 s 转换成一个回文字符串。
思路:
向左右指针去除左右边界相同的字符,剩余的部分 s 为由左端点开始重排或从右端点开始重排。对 s 进行中心扩展得到其最大的回文,如果回文的左剩余与右剩余部分进行重排后相同则,则对这些剩余部分进行重排即可。否则要重拍的部分必定在一半s以上,记录 s 的每种字符的位置,比较每种字符要重排的最大位置。
实现:
#include <bits/stdc++.h>
using namespace std;int main () {ios_base::sync_with_stdio(0); cin.tie(0);int T;cin >> T;while (T--) {string s;cin >> s;int n = s.size();int l = 0, r = n-1;while (l < r && s[l] == s[r]) {l++;r--;}if (l > r) {cout << "0\n";continue;}s = s.substr(l, r-l+1);n = s.size();l = n/2-1, r = n/2;while (l >= 0 && s[l] == s[r]) {l--;r++;}string L = s.substr(0, l+1);string R = s.substr(r);sort(L.begin(), L.end());sort(R.begin(), R.end());if (L == R) {cout << l+1 << '\n';continue;}int ans = n;for (int _ = 0; _ < 2; _++) {vector<vector<int>> pos(26);int res = 0;for (int i = 0; i < n; i++) {pos[s[i]-'a'].push_back(i);}for (vector<int>& v: pos) {if (v.empty()) continue;res = max(res, v[(int)v.size()/2-1]+1);}ans = min(ans, res);reverse(s.begin(), s.end());}cout << ans << '\n';}
}
有建议可以评论,我会积极改进qwq。
相关文章:
Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)
A. Was there an Array? 翻译: 对于整数数组 ,我们将其相等特征定义为数组 ,其中,如果数组 a 的第 i 个元素等于其两个相邻元素,则 ;如果数组 a 的第 i 个元素不等于其至少一个相邻元素,则 …...
如何在本机上模拟IP地址
如何在本机上模拟IP地址 前言 在某些开发或测试场景中,我们可能需要在本机上模拟一个指定的 IP 地址,并让局域网内的其他设备能够通过该 IP 访问本机提供的服务(如 Web 服务)。 本文将详细介绍如何在 Windows 和 macOS 系统上实…...
C++二叉树:数据的“家族树”与高效检索的奥秘
C二叉树:数据的“家族树”与高效检索的奥秘 开篇小故事:图书馆的“智能目录” 想象一座古老的图书馆,藏书百万,却能在几秒内找到任意一本书。 秘密在于它的“智能目录系统”——一本巨大的家族树状手册: 每本书按主题…...
深入解析 Vue 项目中的缓存刷新机制:原理与实战
目录 前言1. Demo2. 知识拓展 前言 在 Vue 项目中,缓存通常用于存储用户信息、角色权限、系统设置等,以提高页面加载速度并减少 API 请求 这里使用 web-storage-cache 作为封装的本地存储工具,支持 localStorage 和 sessionStorage 方式存储…...
【嵌入式Linux应用开发基础】进程间通信(1):管道
目录 一、管道的基本概念 二、管道的工作原理 三、管道的类型 3.1. 匿名管道(Anonymous Pipe) 3.2. 命名管道(Named Pipe,FIFO) 四、管道的读写规则 4.1. 匿名管道的读写规则 4.2. 命名管道的读写规则 五、管…...
【DeepSeek】Mac m1电脑部署DeepSeek
一、电脑配置 个人电脑配置 二、安装ollama 简介:Ollama 是一个强大的开源框架,是一个为本地运行大型语言模型而设计的工具,它帮助用户快速在本地运行大模型,通过简单的安装指令,可以让用户执行一条命令就在本地运…...
DHCP详解,网络安全零基础入门到精通实战教程!
一、DHCP简介 DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。 DHCP前身是BOOTP&am…...
蓝桥杯篇---IAP15F2K61S2中断
文章目录 前言简介中断源1.外部中断2.定时器中断3.串口中断4.ADC中断5.PCA中断6.SPI中断7.PWM中断 中断优先级中断相关寄存器1.IE2.IP3.TCON4.SCON 中断使用步骤1.配置中断源2.使能中断3.设置优先级4.编写中断服务程序5.清除中断标志 示例代码:外部中断使用示例代码…...
【Prometheus】prometheus结合pushgateway实现脚本运行状态监控
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
立创实战派ESP32-S3烧录小智AI指南
小智 AI 聊天机器人-开源项目介绍 本项目是一个开源项目,主要用于教学目的。我们希望通过这个项目,能够帮助更多人入门 AI 硬件开发,了解如何将当下飞速发展的大语言模型应用到实际的硬件设备中。无论你是对 AI 感兴趣的学生,还是…...
深度学习的集装箱箱号OCR识别技术,识别率99.9%
集装箱箱号OCR识别技术是一项结合计算机视觉和规则校验的复杂任务,以下是其关键要点及实现思路的总结: 1、集装箱号结构:11位字符,格式为公司代码(3字母)和序列号(6数字)以及校验码(1数字)和尺寸/类型代码(可选),例如…...
使用 PyTorch 实现标准卷积神经网络(CNN)
卷积神经网络(CNN)是深度学习中的重要组成部分,广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中,我们将使用 PyTorch 实现一个标准的卷积神经网络(CNN),并介绍各个部分的作用。 什…...
Casbin 权限管理介绍及在 Go 语言中的使用入门
引言 在现代软件开发过程中,权限管理是一个至关重要的环节,它关系到系统的安全性和用户体验。Casbin 是一个强大的访问控制库,支持多种访问控制模型,如 ACL(访问控制列表)、RBAC(基于角色的访问…...
如何在Windows下使用Ollama本地部署DeepSeek R1
参考链接: 通过Ollama本地部署DeepSeek R1以及简单使用的教程(超详细) 【DeepSeek应用】DeepSeek R1 本地部署(OllamaDockerOpenWebUI) 如何将 Chatbox 连接到远程 Ollama 服务:逐步指南 首先需要安装oll…...
【分布式理论12】事务协调者高可用:分布式选举算法
文章目录 一、分布式系统中事务协调的问题二、分布式选举算法1. Bully算法2. Raft算法3. ZAB算法 三、小结与比较 一、分布式系统中事务协调的问题 在分布式系统中,常常有多个节点(应用)共同处理不同的事务和资源。前文 【分布式理论9】分布式…...
详细介绍Tess4J的使用:从PDF到图像的OCR技术实现
在当今的数字化时代,OCR(光学字符识别)技术被广泛应用于文档扫描、图片文字识别以及其他自动化数据提取任务。Tesseract作为一款强大的开源OCR引擎,在处理图像和PDF中的文本提取方面具有非常高的准确度和效率。本文将详细介绍如何…...
postgres源码学习之简单sql查询
postgres源码学习之sql查询 sql查询的主流程读取sql解析sql重写sql获得执行计划执行查询操作结果返回 sql查询的主流程 参考postgres的处理流程 由上一节,我们可以看到,当有新的连接通过权限认证之后,将进入等待接收sql语句,并执…...
C#项目05-猜数字多线程
本项目利用多线程,通过点击按钮猜数字, 知识点 线程 基本概念 进程:一组资源,构成一个正在运行的程序,这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况, 线…...
前端504错误分析
前端出现504错误(网关超时)通常是由于代理服务器未能及时从上游服务获取响应。以下是详细分析步骤和解决方案: 1. 确认错误来源 504含义:代理服务器(如Nginx、Apache)在等待后端服务响应时超时。常见架构:前端 → 代理服务器 → 后端服务,问题通常出在代理与后端之间。…...
《C语言动态顺序表:从内存管理到功能实现》
1.顺序表 1.1 概念 顺序存储的线性表,叫顺序表。 1.2顺序表存放的实现方式 可以使用数组存储数据,可以实现逻辑上相连,物理内存上也相连。也可以使用malloc在堆区申请一片连续的空间,存放数据,实现逻辑上相连&#…...
通过API 调用本地部署 deepseek-r1 模型
如何本地部署 deepseek 请参考(windows 部署安装 大模型 DeepSeek-R1) 那么实际使用中需要开启API模式,这样可以无拘无束地通过API集成的方式,集成到各种第三方系统和应用当中。 上遍文章是基于Ollama框架运行了deepSeek R1模型…...
DeepSeek-学习与实践
1.应用场景 主要用于学习与使用DeepSeek解决问题, 提高效率. 2.学习/操作 1.文档阅读 文档 DeepSeek -- 官网, 直接使用 --- 代理网站 --- 极客智坊 https://poe.com/DeepSeek-R1 https://time.geekbang.com/search?qdeepseek -- 搜索deepseek的资料 资料 20250209DeepSeekC…...
DeepSeek和ChatGPT的全面对比
一、模型基础架构对比(2023技术版本) 维度DeepSeekChatGPT模型家族LLAMA架构改进GPT-4优化版本参数量级开放7B/35B/120B闭源175B位置编码RoPE NTK扩展ALiBiAttention机制FlashAttention-3FlashAttention-2激活函数SwiGLU ProGeGLU训练框架DeepSpeedMeg…...
无线网络安全配置指南:WPA、WPA2、WPA3及WAPI详解
对于做 Wi-Fi 的朋友,大家可能天天都需要配置各种加密和模式,但是有时候可能会一时忘记如何配置,基于日常的工作经验,总结了一篇文档:《无线网络安全配置指南:WPA、WPA2、WPA3及WAPI详解》,具体…...
撕碎QT面具(6):调节窗口大小后,控件被挤得重叠的解决方法
问题:控件重叠 分析原因:因为设置了最小大小,所以界面中的大小不会随窗口的变化而自动变化。 处理方案:修改mimumSize的宽度与高度为0,并设置sizePolicy为Expanding,让其自动伸缩。 结果展示(自…...
解锁机器学习核心算法 | K-平均:揭开K-平均算法的神秘面纱
一、引言 机器学习算法种类繁多,它们各自有着独特的优势和应用场景。前面我们学习了线性回归算法、逻辑回归算法、决策树算法。而今天,我们要深入探讨的是其中一种经典且广泛应用的聚类算法 —— K - 平均算法(K-Means Algorithm)…...
【Linux】匿名管道的应用场景-----管道进程池
目录 一、池化技术 二、简易进程池的实现: Makefile task.h task.cpp Initchannel函数: 创建任务: 控制子进程: 子进程执行任务: 清理收尾: 三、全部代码: 前言: 对于管…...
机器学习(1)安装Pytorch
1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log: Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...
Linux 多Python版本统一和 PySpark 依赖 python 包方案
背景 Linux 服务器经常有多个Python版本,比如 Python2 有两个版本,Python3 有两个版本。在使用上容易混淆,而且有些需要新增一些 module 更容易,安装如果路径不统一,导致日常使用时,会出现找不到新安装mod…...
PostgreSQL的学习心得和知识总结(一百六十九)|深入理解PostgreSQL数据库之 Group By 键值消除 的使用和实现
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...
