当前位置: 首页 > news >正文

D. Tandem Repeats? - 思维 + 双指针

题面

分析

s s s的范围很小,可以 O ( n 2 ) O(n^2) O(n2),在规定复杂度以内来完成枚举所有子串判断是否有满足条件的最大的子串,可以在第一层循环枚举子串长度 d d d,第二层循环枚举左右端点,通过双指针维护区间。对长度取最大值。

代码
#include <bits/stdc++.h>using namespace std;
using ll = long long;void solve() {string s;cin >> s;int ans = 0;int cnt = 0;int n = s.size();for(int d = 1; d <= n; d ++) {cnt = 0;for(int i = 0, j = 0; i + d < n; i ++) {cnt += (s[i] == s[i +d] || s[i] == '?' || s[i + d] == '?');while(i - j + 1 > d && j + d < n) {cnt -= (s[j] == s[j + d] || s[j] == '?' || s[j + d] == '?');j ++;}if(cnt == d) {ans = max(ans, d * 2);break;}}}cout << ans << "\n";
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin >> T;while(T --) {solve();}
}
http://www.lryc.cn/news/321174.html

相关文章:

  • 第十三届蓝桥杯省赛CC++ 研究生组
  • Oracle中的commit与rollback
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(画布组件:OffscreenCanvasRenderingContext2D)
  • Redis如何实现主从复制?主从复制的作用是什么?Redis集群是如何工作的?它有哪些优点和缺点?
  • 【Numpy】(2)numpy对象和random模块
  • [QJS xmake] 非常简单地在Windows下编译QuickJS!
  • Ubuntu双系统/home分区扩容
  • 0基础学习VR全景平台篇第145篇:图层控件功能
  • 一文看懂套利的那些事儿
  • 【工具】Mermaid + 大模型画流程图
  • 内网渗透学习-环境搭建
  • el-progress渐变色
  • DHCP在企业网的部署及安全防范
  • 列表的常用操作
  • 外包2月,技术退步惊现!大专生逆袭大厂,全靠这份神秘资料!
  • 考研失败, 学点Java打小工_Day3_卫语句_循环
  • 网络架构层_服务器上下行宽带
  • 面试算法-47-有效的括号
  • Android11 HID开发系统源码配置
  • 73_Pandas获取分位数/百分位数
  • 力扣练习题
  • Telegraf--采集指定信息
  • Redis是如何实现持久化的?请解释RDB和AOF持久化方式的区别和优缺点。Redis是单线程还是多线程的?为什么Redis使用单线程模型仍然能保持高性能?
  • java通过Excel批量上传数据
  • VS2022 配置QT5.9.9
  • 接收用户输入的数字,判断是否是质数(素数)以及输出1-100之间的所有质数
  • 人脸识别AI视觉算法---豌豆云
  • Apache SeaTunnel MongoDB CDC 使用指南
  • 智能合约 之 部署ERC-20
  • 【C++】用红黑树模拟实现set、map