思路

这里我们要注意以下几点:

  1. 字符串哈希自然溢出(\(\pmod 2^64\))会被卡,会\(WA~5\)个点
  2. 注意有模数的时候不要用\(unsigned\ long \ long\)类型

代码

#include <iostream>
using namespace std;
typedef long long LL;
const int N = 2000010,BASE = 131,MOD = 998244353;
int n;
char s[N];
LL p[N],h1[N],h2[N];
LL query1 (int l,int r) {
return ((h1[r] - h1[l - 1] * p[r - l + 1]) % MOD + MOD) % MOD;
}
LL query2 (int l,int r) {
return ((h2[l] - h2[r + 1] * p[r - l + 1]) % MOD + MOD) % MOD;
}
int main () {
scanf ("%d%s",&n,s + 1);
p[0] = 1;
for (int i = 1;i <= 2 * n;i++) {
p[i] = p[i - 1] * BASE % MOD;
h1[i] = (h1[i - 1] * BASE + s[i] - 'a' + 1) % MOD;
}
for (int i = 2 * n;i >= 1;i--) h2[i] = (h2[i + 1] * BASE + s[i] - 'a' + 1) % MOD;
for (int i = 1;i <= n + 1;i++) {
if (query1 (1,i - 1) == query2 (n + 1,n + i - 1) && query1 (n + i,2 * n) == query2 (i,n)) {
for (int j = n + i - 1;j >= i;j--) putchar (s[j]);
printf ("\n%d",i - 1);
return 0;
}
}
puts ("-1");
return 0;
}

[ABC284F] ABCBAC(字符串哈希)的更多相关文章

  1. HDU 1880 魔咒词典(字符串哈希)

    题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...

  2. 洛谷P3370 【模板】字符串哈希

    P3370 [模板]字符串哈希 143通过 483提交 题目提供者HansBug 标签 难度普及- 提交  讨论  题解 最新讨论 看不出来,这题哪里是哈希了- 题目描述 如题,给定N个字符串(第i个 ...

  3. HDU2594 Simpsons’ Hidden Talents 字符串哈希

    最近在学习字符串的知识,在字符串上我跟大一的时候是没什么区别的,所以恶补了很多基础的算法,今天补了一下字符串哈希,看的是大一新生的课件学的,以前觉得字符串哈希无非就是跟普通的哈希没什么区别,倒也没觉得 ...

  4. LA 6047 Perfect Matching 字符串哈希

    一开始我用的Trie+计数,但是不是计多了就是计少了,后来暴力暴过去的…… 看了别人的代码知道是字符串哈希,但是仍有几个地方不理解: 1.26^500溢出问题 2.没考虑哈希碰撞? 跪求指点! #in ...

  5. AC日记——【模板】字符串哈希 洛谷 3370

    题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转 ...

  6. 从Hash Killer I、II、III论字符串哈希

    首先,Hash Killer I.II.III是BZOJ上面三道很经典的字符串哈希破解题.当时关于II,本人还琢磨了好久,但一直不明白为啥别人AC的代码都才0.3kb左右,直到CYG神犇说可以直接随机 ...

  7. 【NOIP模拟】Grid(字符串哈希)

    题目背景 SOURCE:NOIP2016-RZZ-1 T3 题目描述 有一个 2×N 的矩阵,矩阵的每个位置上都是一个英文小写字符. 现在需要从某一个位置开始,每次可以移动到一个没有到过的相邻位置,即 ...

  8. 洛谷 P3370 【模板】字符串哈希

    洛谷 P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的 ...

  9. cf_514C(字符串哈希)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121897#problem/G Watto and Mechanism Time ...

  10. 洛谷 P3370 字符串哈希 (模板)

    <题目链接> <转载于 >>>  > 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共 ...

随机推荐

  1. 【ZYNQ学习】ZYNQ简介与Vivado使用

    从本篇文章开始,就来记录一下ZYNQ的学习,本篇博客主要介绍ZYNQ是什么以及在vivado中创建一个ZYNQ工程的过程,其中的知识大部分来自于正点原子的ZYNQ教程,感兴趣的可以去看一下他们家的参考 ...

  2. Maxim遍历测试工具(monkey升级版)

    Maxim 对应GitHub地址:https://github.com/zhangzhao4444/Maxim,其是对Android monkey的改进工具.是基于遍历规则和高性能要求. 条件准备: ...

  3. vue保持滚动条在底部

    mounted() { this.scrollToBottom(); }, updated: function () { this.scrollToBottom(); }, scrollToBotto ...

  4. 为什么JAVA中(byte)128结果为-128;(byte)-129结果为127

    为什么JAVA中(byte)128结果为-128;(byte)-129结果为127 在JAVA中默认的整型为int型,int型占4个字节,为32位.byte占一个字节为8位. JAVA中的二进制都是采 ...

  5. Carthage 使用介绍

    1.安装 Carthage 安装 brew install carthage 检测当前版本 carthage version 升级至最新版本 brew upgrade carthage 2.如果更新出 ...

  6. Drone自动部署配置文件

    .drone.yml 点击查看代码 kind: pipeline # 定义对象类型,还有secret和signature两种类型 type: docker # 定义流水线类型,还有kubernetes ...

  7. 快速了解 Kubernetes 的架构及特性

    kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群.滚动升级回滚.弹性伸缩.自动治愈.服务发现等多种特性能力.本文将带着大家快速了解 kubernetes ,了 ...

  8. flutter RaisedButton 设置最小宽度和高度

    flutter中可以通过ButtonTheme为RaisedButton设置最小宽度,示例代码如下: ButtonTheme( minWidth: 200.0,//设置最小宽度 height: 100 ...

  9. 浙大版《C语言程序设计(第3版)》题目集 练习3-3 统计学生平均成绩与及格人数 (15 分)

    练习3-3 统计学生平均成绩与及格人数 (15 分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数.题目保证输入与输出均在整型范围内. 输入格式: 输入在第一行中给出非 ...

  10. 20200924--图像相似度(奥赛一本通P92 5多维数组)

    给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度.说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点.两幅图像的相似度定义为相同像素点数占总像素点数的百分比. ...