很模板的一道题 传送门 :
思路将字符串转换为 p p p进制数,同时记录他们之间的 次方
然后需要查询一段字符串的时候直接 h [ r ] − h [ l − 1 ] ∗ p [ r − l + 1 ] ; h[r] - h[l-1]*p[r-l+1]; h[r]−h[l−1]∗p[r−l+1]; 即可
CODE#include
using namespace std;
#define ull unsigned
#define ll long long
#define endl '\n'
const int N = 1e5+10 , P= 131;
char str[N];
ull h[N],p[N];
ull get(int l,int r)
{
return h[r] - h[l-1]*p[r-l+1];
}
void solve()
{
int n,m;cin>>n>>m;
cin>>(str+1);
p[0] = 1;
for(int i=1;i>l1>>r1>>l2>>r2;
if(get(l1,r1) == get(l2,r2))
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?