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

洛谷U639316 最长子串询问 题解 字符串哈希+二分

题目链接:https://www.luogu.com.cn/problem/U639316

解题思路:

二分,然后通过哈希判断子串是否相等。

示例程序:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
const unsigned long long B = 233;
long long fac[maxn] = {1};unsigned long long hsh[maxn];
int n, m, p, q;
char s[maxn];unsigned long long query(int l, int r) {return hsh[r] - hsh[l-1];
}int cal(int p, int q) {int l = 1, r = n - q + 1, z = 0;while (l <= r) {int mid = (l + r) / 2;if (query(p, p+mid-1) * fac[q-p] == query(q, q+mid-1))z = mid, l = mid + 1;elser = mid - 1;}return z;
}int main() {scanf("%d%d%s", &n, &m, s+1);for (int i = 1; i <= n; i++) {fac[i] = fac[i-1] * B;hsh[i] = hsh[i-1] + (s[i] - 'a' + 1) * fac[i];}while (m--) {scanf("%d%d", &p, &q);int ans = cal(p, q);printf("%d\n", ans);}return 0;
}
http://www.jsqmd.com/news/65623/

相关文章:

  • AI规范编程 - specify-Kit
  • 2025最新成都精装房装修公司TOP5评测!一站式服务+品质保障,成都十区装修服务商权威榜单发布,重塑居家生活新体验
  • why North Korean are extremely anti-American, and think Nihon is a puppet of A.
  • 可变参数模版中的折叠表达式
  • scikit-learn 能否做深度学习?——兼谈不同神经元数量的模型对比实验实现
  • 吟诗一首
  • 二分查找
  • 深入解析USB侦探:数字取证数据流分析技术
  • Oracle数据库性能诊断与SQL优化实战指南
  • 56
  • re:MARS 2022:聚焦机器学习与机器人技术的年度盛会
  • 深入解析:Spring Boot 3.2 高性能架构实战:虚拟线程、原生镜像与响应式编程全解析
  • CMake-模块化
  • 测试用例的编写和注意事项
  • 割点和桥
  • AI元人文构想全维解构:从意义行为原生到文明价值操作系统
  • YII框架的三条经典利用链的探究
  • HELLDIVERS 2 地狱潜兵 2 缩小体积至22.54G 教程
  • 深度解析人工神经元输入机制
  • Milvus GUI ATTU Docker 容器化部署指南
  • 如何使用QFontDatabase在Qt应用程序中嵌入字体
  • 人工神经元输入机制深度解析:从理论基础到工程实践的全面指南
  • 贪心 [CSP-S 2025] 社团招新
  • 12月7日总结 - 作业----
  • P7115 [NOIP2020] 移球游戏 题解
  • pdf图片处理
  • 2025年12月本田雅阁更换轮胎推荐:最新性能测评与选购攻略
  • 获取运行中的exe的窗口标题名
  • 2025年大众帕萨特更换轮胎推荐:玲珑、米其林、马牌哪个是全面优选?
  • 12.7