首页 > 其他分享 >Yet Another Sigma Problem

Yet Another Sigma Problem

时间:2024-07-05 15:43:06浏览次数:15  
标签:ab int hs ll base Problem Sigma Yet mod

题目传送门

题目

跳转看吧

题解

哈希,字典树

对字符串的前缀进行哈希处理,转换为数字,用 \(map\) ,然后为了避免重复,可以将每一种公共字符串前缀的权重都设置为1

例如:

\(a\) , \(ab\) , \(aba\) 权重都为1,因为 \(ab\) 是2,但是有一种包含在 \(a\) 里面,同理, &aba& 是3,但是被 &ab& , &a& 包含,所以每个公共的前缀权重为1;

代码如下:

点击查看代码

#include<bits/stdc++.h>

using namespace std;
#define ll long long
int base = 131;
int mod[] = { 1000000007, 998244353 };
map<pair<int, int>,int>H;

int main()
{
	int n;
	cin >> n;
	ll ans = 0;
	for (int i = 0; i < n; i++)
	{
		string s;
		cin >> s;
		ll hs[] = { 0,0 };//
		for (int j = 0; j < s.length(); j++)
		{
			hs[0] = (hs[0] * base % mod[0] + s[j]) % mod[0];
			hs[1] = (hs[1] * base % mod[1] + s[j]) % mod[1];
			ans += H[make_pair(hs[0], hs[1])];
			H[make_pair(hs[0], hs[1])]++;
		}
	}
	cout << ans << endl;
}

完结,撒花

标签:ab,int,hs,ll,base,Problem,Sigma,Yet,mod
From: https://www.cnblogs.com/haggard/p/18285964

相关文章

  • Nanami and the House Protecting Problem
    求出最大流后,从源点开始沿残量网络BFS,标记能够到达的点。E中所有连接已标记点和未标记点的边构成最小割点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[6005];vector<int>c[6005];vector<int>d[6005];boolv[6005];intpr1[6005],pr2[6005];c......
  • 研0 冲刺算法竞赛 day8 P1303 A*B Problem
    思路:用char[]存储输入,后用int[]逐位计算,根据乘法计算规则错位相加,用数组存储,然后考虑进位,最后倒序输出代码:#include<iostream>#include<cstring>usingnamespacestd;chara1[10001],b1[10001];inta[10001],b[10001],c[10001];intmain(){ cin>>a1>>b1; for......
  • [MdOI R5] Many Minimizations & [ARC164F] Many Increasing Problems 题解
    讲下一个思路比较自然的基于自然数幂和的\(O(n\logn)\)且复杂度与\(m\)几乎无关的做法。不难发现让我们计数的问题是保序回归\(L_1\)中一条链的情况。这个情况有一个简单的slope-trick做法:用堆维护斜率,每次push进去两个当前的数,然后pop出一个最大值。最终所有数的和......
  • [MdOI R5] Many Minimizations & [ARC164F] Many Increasing Problems 题解
    讲下一个思路比较自然的基于自然数幂和的\(O(n\logn)\)且复杂度与\(m\)几乎无关的做法。不难发现让我们计数的问题是保序回归\(L_1\)中一条链的情况。这个情况有一个简单的slope-trick做法:用堆维护斜率,每次push进去两个当前的数,然后pop出一个最大值。最终所有数的和......
  • D. Yet Another Monster Fight
    cf链接洛谷链接方法一最大最小值问题我们很容易想到二分答案法。那么我们如何写出check函数呢?对于答案x,若x-i+1<a[i],则选定怪物一定不在i位置左侧,即L=i;若x-n+i<a[i],则选定怪物一定不在i位置右侧,R=min(R,i)。遍历数组,如果L<=R则答案符合题意;否则不符合。code #includ......
  • 打卡信奥刷题(132)用Scratch图形化工具信奥P9913 [普及组]「RiOI-03」water problem
    「RiOI-03」waterproblem题目描述给定一个正整数nnn,问一个正方形能否被分割为nn......
  • [题解]AT_abc256_h [ABC256Ex] I like Query Problem
    思路首先可以看一下P4145,在P4145中使用了一种叫势能线段树的Trick。对于势能线段树,我个人的理解是,对于一段区间(或一个点)直接暴力维护,在经过很少的次数后操作将没有意义的题就可以使用势能线段树。在本题中,如果没有推平操作,显然我们可以直接使用势能线段树,时间复杂度可以轻......
  • 1619D New Year‘s Problem
    题目链接:NewYear'sProblem从题目的描述中很容易看出来这是一道二分的题目,那么怎么去考虑呢?首先最多选n-1个商店,那也就是说至少有一个商店要选两个人或以上,因此我们的check函数可以去一个个枚举商店,看看是否有一个商店满足两个人,然后每个人选的价值都要大于mid。代码附上:#i......
  • Sigma-Delta ADC芯片 国产ADC芯片推荐
    SC1641三通道24位ADC高精度Sigma-DeltaADC:16~24bit,4SPS~125kSPS,1~16通道,已量产输入带宽有限低采样率高精度性能24bit出色的DNL和INL性能典型应用:测温、测重、化学分析、生物信号、电流监测等,适合各类传感器应用主要性能:•最高24位分辨率•更......
  • 洛谷P1601 A+B Problem(高精)
    #include<iostream>#include<string>#include<cstring>#include<cstdio>usingnamespacestd;constintN=1005;structbign{intlen,s[N];bign(){memset(s,0,sizeof(s));len=1;}bign(intnum){*this=num;}......