传送门

题意

q次操作,每次两种操作:

1 x y:将wx变成y

2 x:查询满足一下两个条件的字符串(①以字符串x为后缀②字符串值\(\le wx\))

分析

对n个字符串预处理,设f[i][j]为第i个字符串0~j的子串哈希值。

再用v[i]记录以字符串i为后缀的字符串,统计的时候扫一遍

复杂度\(O(n^2+n*q)\)

trick

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
int t,n;
char s[1010][1010];
int a[1010],f[1010][1010],len[1010];
int q,judge,x,y;
vector<int>v[1010];//v[x][i]表示x是v[x][i]的后缀
int base[1010];
const int mod = 1000173169;
const int seed = 131;//取奇数质数 31 131 void init()
{
base[0]=1;
F(i,1,1000) base[i]=(ll)base[i-1]*seed%mod;
} void op1()
{
F(i,1,n)
{
f[i][0]=0;
F(j,1,len[i]) f[i][j]=((ll)f[i][j-1]*seed%mod+s[i][j])%mod;
}
} int Hash(int x,int l,int r)
{
return (f[x][r]-(ll)f[x][l-1]*base[r-l+1]%mod+mod)%mod;
} void op2()
{
F(i,1,n)
{
v[i].push_back(i);
F(j,i+1,n)
{
if(len[i]==len[j])
{
if(Hash(i,1,len[i])==Hash(j,1,len[j])) v[i].push_back(j),v[j].push_back(i);
}
else if(len[i]>len[j])
{
if(Hash(i,len[i]-len[j]+1,len[i])==Hash(j,1,len[j])) v[j].push_back(i);
}
else
{
if(Hash(i,1,len[i])==Hash(j,len[j]-len[i]+1,len[j])) v[i].push_back(j);
//printf("Hash[%d][%d]=%d\n", );
}
}
}
} int main()
{
init();
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);
F(i,1,n)
{
scanf("%s%d",s[i]+1,a+i);
len[i]=strlen(s[i]+1);
v[i].clear();
}
op1();
op2();
//F(i,1,n) printf("%d\n",v[i].size() );
for(scanf("%d",&q);q--;)
{
scanf("%d",&judge);
if(judge==1)
{
scanf("%d %d",&x,&y);
a[x]=y;
}
else
{
scanf("%d",&x);
int sz=v[x].size(),sum=0;
R(i,0,sz) if(a[v[x][i]]<=a[x]) sum++;
printf("%d\n", sum);
}
}
}
}

fzu2280 Magic(暴力+哈希预处理)的更多相关文章

  1. bzoj 3916 暴力哈希

    暴力的哈希,注意: 将一个串当作另一个串的前缀,需要乘上p[len],len=后面串的长度 这是自己的代码,拿数据在本地测A掉了,但是bz上wa了??bz换数据了难道?? #include<cs ...

  2. 【noip模拟】Fancy Signal Translate (暴力 + 哈希)

    题目描述 FST是一名可怜的 OIer,他很强,但是经常 fst,所以 rating 一直低迷. 但是重点在于,他真的很强!他发明了一种奇特的加密方式,这种加密方式只有OIer才能破解. 这种加密方式 ...

  3. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  4. BZOJ3574 HNOI2014抄卡组(哈希)

    容易发现通配符中间的部分可以任意匹配,会造成的无法匹配的仅仅是前后缀,前缀和后缀可以分别独立处理.如果字符串均有通配符,只需要按前/后缀长度排序然后暴力匹配就可以了. 问题在于存在无通配符的字符串.显 ...

  5. URAL - 1486 Equal Squares 二维哈希+二分

    During a discussion of problems at the Petrozavodsk Training Camp, Vova and Sasha argued about who o ...

  6. 牛客练习赛33 E. tokitsukaze and Similar String (字符串哈希)

    题目链接:https://ac.nowcoder.com/acm/contest/308/E 题意:中文题 见链接 题解:哈希预处理(三哈希模板) #include <bits/stdc++.h ...

  7. hdu多校第五场1005 (hdu6628) permutation 1 排列/康托展开/暴力

    题意: 定义一个排列的差分为后一项减前一项之差构成的数列,求对于n个数的排列,差分的字典序第k小的那个,n<=20,k<=1e4. 题解: 暴力打表找一遍规律,会发现,对于n个数的排列,如 ...

  8. [十二省联考2019]D1T2字符串问题

    嘟嘟嘟 省选Day1真是重大失误,T2连暴力都没时间写. 上周五重新答了遍Day1,竟然搞了187分吼吼吼吼. T2按40分写的暴力,结果竟然得了60分. 稍微说一下暴力吧:预处理哈希,对于一组支配关 ...

  9. POJ3974 Palindrome Manacher 最长回文子串模板

    这道题可以$O(nlogn)$,当然也可以$O(n)$做啦$qwq$ $O(nlogn)$的思路是枚举每个回文中心,通过哈希预处理出前缀和后缀哈希值备用,然后二分回文串的长度,具体的就是判断在长度范围 ...

随机推荐

  1. Seven times have I despised my soul 《我曾七次鄙视自己的灵魂》

    <我曾七次鄙视自己的灵魂>,纪伯以“自己的灵魂”为名,看穿人性所共有弱点的一首诗.诗句简单有力发人深省,督促人们拥有更高的精神境界,呼吁人们涤荡自己的灵魂,唾弃丑恶,追求高尚. Seven ...

  2. 集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(三)

    通过组织结构能够对项目的岗位.部门.人员进行增删改操作. 加入新部门.并为新部门加入人员: 选中部门后,点击鼠标右键,能够选择加入平级部门或下属部门. 新建部门时,须要给部门设置部门编号.名称.与部门 ...

  3. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  4. 组件接口(API)设计指南[2]-类接口(class interface)

    *返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 类接口(class interface) 你能够參考MGTi ...

  5. 深入理解JVM:HotSpot虚拟机对象探秘

    对象的创建 java是一门面向对象的语言.在Java程序执行过程中无时无刻有Java对象被创建出来.在语言层面上,创建对象(克隆.反序列化)一般是一个newkeyword而已,而在虚拟机中,对象的创建 ...

  6. html使用代码大全

    <DIV style="FONT-SIZE: 9pt">1)贴图:<img src="图片地址">1)首行缩进2格:<p styl ...

  7. AOP和OOP的区别

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP与OOP是面向不同领域的两种设计思想. ...

  8. BingMap地图怎样显示中文

    这是bingMap的js引用 <script type="text/javascript" src="v=7.0&mkt=zh-cn'></sc ...

  9. vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案

    项目背景 vue-cli生成的单页面项目,router使用history模式.产品会在公众号内使用,需要添加微信JSSDK,做分享相关配置. 遇到的问题 相关配置与JS接口安全域名都已经ok,发布后, ...

  10. Class.forName("java.lang.String")的作用?

    返回字节码: 返回的方式有2种: 第一种是这个类的字节码已经加载到内存里面来了,现在想要取到它的字节码,我直接找到那份字节码把他返回: 第二种是我去得到这个类的字节码,结果在虚拟机里面还没有这个类的字 ...