首页 > 其他分享 >ARC099F题解

ARC099F题解

时间:2022-08-23 09:00:20浏览次数:79  
标签:p2 mod1 mod2 p1 int 题解 ARC099F id

被杀了,记录一下好了。

对于他那个数组是否相等,直接判断复杂度很高,考虑通过哈希映射之后判断是否相等。

对数组的 Hash 可以类似字符串 Hash那样去做。

于是判断一个区间是否和整个串相同就是 \(\frac{S[R]-S[L-1]}{p^{id[L-1]}}=S[n]\),其中 \(id\) 是指针的偏移量,\(S\) 是执行前缀之后得到的数组的 Hash 值。

开个 map 直接做就好了。然后这题卡单哈希要写双哈希。

#include<utility>
#include<cstdio>
#include<map>
typedef std::pair<int,int> pr;
const int M=250005,mod1=2053075307,mod2=1926195307;
int n,S1[M],S2[M],_P1[M<<1],_P2[M<<1],*p1=_P1+M,*p2=_P2+M,id[M];char t[M];std::map<pr,int>CB;
signed main(){
	long long ans(0);scanf("%d%s",&n,t+1);p1[0]=p2[0]=1;
	for(int i=1;i<=n;++i){
		id[i]=id[i-1]+(t[i]=='<'?-1:t[i]=='>'?1:0);
		p1[i]=13331ll*p1[i-1]%mod1;p1[-i]=1814363528ll*p1[-i+1]%mod1;
		S1[i]=(1u*S1[i-1]+(t[i]=='+'?p1[id[i]]:t[i]=='-'?mod1-p1[id[i]]:0))%mod1;
		p2[i]=13331ll*p2[i-1]%mod2;p2[-i]=335939096ll*p2[-i+1]%mod2;
		S2[i]=(1u*S2[i-1]+(t[i]=='+'?p2[id[i]]:t[i]=='-'?mod2-p2[id[i]]:0))%mod2;
	}
	const int s1=S1[n],s2=S2[n];++CB[pr(s1,s2)];
	for(int i=1;i<=n;++i){
		ans+=CB[pr(S1[i],S2[i])];++CB[pr((1ll*s1*p1[id[i]]+S1[i])%mod1,(1ll*s2*p2[id[i]]+S2[i])%mod2)];
	}
	printf("%lld",ans);
}

标签:p2,mod1,mod2,p1,int,题解,ARC099F,id
From: https://www.cnblogs.com/lmpp/p/16614912.html

相关文章

  • laravel+mews/captcha 打开页面后的首次验证码总是验证失败的问题解决
    出现问题的原因验证码获取后,还有其他的接口请求,导致验证码的缓存被覆盖(参考文章:LaravelSession遇到的坑)解决办法修改vendor/mews/captcha/src/Captcha.php源码,将......
  • AtCoder Grand Contest 058 部分题目不简要题解
    从这里开始比赛目录ProblemA MakeitZigzag考虑使$1,3,5,7,\cdots,2n-3$这些位置后三个中的最大值在中间,最后再处理一下最后两个位置就行了。Cod......
  • ECfinal2021部分题解
    把赛中没有过的题争取补一下题目链接:https://codeforces.com/gym/103861C:其实,最后每一种字符只有两种状态:1.出现了x,此时就已经知道该字符有多少个了2.没有出现x,那么相......
  • 题解 CF1712D Empty Graph
    CF1712D洛谷的CF的提交无了,所以可能没人来看了,但是在题解区是清一色的二分,而唯一一篇贪心题解的讨论还略显复杂的情况下,我还是希望提供一种比较简洁的贪心题解。在复杂......
  • P5753 瓷片项链 题解
    题目分析很容易发现只要烧制所有瓷片的损耗小于总量,就能烧制成项链。不妨设烧制了\(n\)片,则总长度为\(n\times0.3\sqrt{v-v0}\)。本题数据范围较小,\(n\)的大......
  • CF1715C Monoblock 题解
    思路根据题意我们不难看出,求一个区间的块的数量即求区间内\(a_i\neqa_{i-1}\)的数量,如果直接枚举每个区间的话,时间复杂度是\(\mathcalO(n^2)\)显然这样做是不行的,但......
  • CF1715B Beautiful Array 题解
    思路根据题意,不难看出,当\(b>\dfrac{s}{k}\)时,一定无解,因为无论怎样分配\(s\),最终的结果一定不会比\(\dfrac{s}{k}\)更大。然后再来考虑当\(b\le\dfrac{s}{k}\)时,......
  • CF1715A Crossmarket 题解
    思路根据题意以及下面给的样例解释,我们不难看出最优解一定是下面两种情况的一种:即一个人直接抵达目标点的距离加上另一个人走行和列,即\(n\)和\(m\)中较小的一个,加......
  • CF1715D 2+ doors 题解
    个人认为这道D比C要简单。思路因为题目中每个条件限制为$a_i\mida_j=x$,并且题目中还提到\(x<2^{30}\),我们考虑将\(x\)转换成二进制的方式表示,枚举\(x\)的......
  • 蔚来杯2022牛客暑期多校训练营加赛 题解
    E.Everyoneisbot对于后\(p\)个人,这\(p\)个人相互制约,一旦有一个人进行复读,剩下的\(p-1\)个人一定会进行复读,那么这个人就会被禁言,对于他来说不是最优策略。此时......