首页 > 其他分享 >ICPC2022Xian G Perfect Word 题解

ICPC2022Xian G Perfect Word 题解

时间:2023-11-26 21:56:58浏览次数:39  
标签:Perfect 子串 good string ICPC2022Xian int 题解 ll size

Link

ICPC2022Xian G Perfect Word

Question

给出 \(n\) 个串,我们称 \(t\) 串是 "good" 当且仅当 \(t\) 的所有子串都在 \(n\) 个串中出现过

问最长的 "good" 的串的长度

Solution

由于所有串的子串个数为 \(L\times (L+1)/2\) , \(L\) 为串的长度

所以 ”good“ 串 的长度 不会大于 大约 350

有很容易发现一个性质 ,一个 "good" 串 的所有子串都是 “good” 子串

所以暴力枚举每个串的所有子串,判断是不是 “good” 串

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN = 2e5 + 5;
ll Tex = 1, n, ans = 1;
string s[MAXN];
map<string, ll> mp;
bool cmp(string xx, string yy)
{
	return xx.size() < yy.size();
}
void AC()
{
	cin >> n;
	for(int i = 1; i <= n; i ++)
		cin >> s[i];
	sort(s + 1, s + n + 1, cmp);
	for(int i = 1; i <= n; i ++)
	{
		if(s[i].size() == 1) mp[s[i]] = 1;
		else
		{
			if(s[i].size() > 350) continue;
			string l, r;
			for(int j = 0; j < s[i].size() - 1; j ++)
				l.push_back(s[i][j]);
			for(int j = 1; j < s[i].size(); j ++)
				r.push_back(s[i][j]);
			if(mp[l] && mp[r])
			{
				ans = max(ans, (ll)s[i].size());
				mp[s[i]] = 1;
			}
		}
	}
	cout << ans << endl;
}
int main()
{
	ios::sync_with_stdio(false);
//	cin >> Tex;
	while(Tex --) AC();
	return 0;
} 

标签:Perfect,子串,good,string,ICPC2022Xian,int,题解,ll,size
From: https://www.cnblogs.com/martian148/p/17858028.html

相关文章

  • ICPC2022Xian E Find Maximum 题解
    LinkICPC2022XianEFindMaximumQuestion定义\(f(x)\)求Solution通过打表我们可以发现\(f(x)\)表示三进制表达中有效位数与数码和之和接下来考虑如何获得最大的\(f(x)\)贪心的去考虑,假设答案为\(Ans\),\((Ans)_3\)肯定是前几位和\((R)_3\)的前几位一样,然后某一......
  • Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决
    Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决背景最近想使用shell脚本给SQLServer数据库插入数据,但是发现了报错同时进行CLoudquery连接SQLServer数据库时也出现了异常.作为笔记记录一下问题和解决方法sqlcmd的问题现象sqlcmd的提示信息第一:安装sudo......
  • warning: Signature not supported. Hash algorithm SHA1 not available 问题解决
    在使用RockyLinux安装服务的时候碰到此问题,记录下解决方法update-crypto-policies--setLEGACY参考资料https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9......
  • 【luogu题解】T378828 位运算
    位运算题目背景题目由daiyulong20120222创作(me)并由QBW1117完善以及数据。题目描述给定两个数\(x,y\),在给定一个位运算符号\(c\)。请你列出\(x,y\)进行\(c\)位运算是的算数竖式式。注:竖式这么列:显示出两个数的完整二进制,包括前导零。32个'-'。显示出......
  • T402161 run 题解
    LinkT402161runQuestion亮亮总共要跑\(n\)圈,可以分成多次,但是每次跑的圈数必须要比上一次跑的多,求跑完\(n\)圈的方案数Solution显然动态规划定义\(F[i][j]\)表示一共跑了\(i\)圈,最后一次跑了\(j\)圈的方案数,转移方程就为\[F[i][j]=\sum\limits_{k=1}^{j-1}F[i......
  • P1091 合唱队形题解(普及/提高−) 题解
    题目传送门这道题是一个很经典的动态规划。因为合唱队形的身高是从低——高——低来排的,所以就可以利用分治的思想将队形分成两个部分:低——高是最长上升子序列;高——低是最长下降子序列。这道题其实可以用二分查找来优化,可是这题n≤100,没有必要优化,需优化题详见P1020导弹拦截......
  • P3370 【模板】字符串哈希(普及−) 题解
    题目链接题目大意如题,给定\(N\)个字符串(第\(i\)个字符串长度为\(M_i\),字符串内包含数字、大小写字母,大小写敏感),请求出\(N\)个字符串中共有多少个不同的字符串。不知道大家知不知道一个字符串函数,叫\(insert\)他是\(STL\)库中的一个函数,作用是将两个字符串拼接起来,我......
  • P5867 [SEERC2018] Fishermen(暂无评定) 题解
    题意有\(n\)条鱼,\(m\)个渔夫,且这\(m\)个渔夫都在横坐标轴上,每个渔夫都有一个长度为\(l\)的鱼竿,当鱼和渔夫距离小于或等于\(l\)时,鱼能被钓到。并且渔夫\((x,0)\)与鱼\((a,b)\)的距离(假设为\(L\))满足如下公式\(|a−x|+b\)式子中\(x\)为渔夫的横坐标,\((a,b)......
  • AT_pakencamp_2020_day1_f Fibonaccyan(暂无评定) 题解
    题目链接题目大意:给定数\(P\),寻找能把\(P\)整除的最小的斐波那契数,然后输出它是斐波那契数列中的第几个,找不到输出的话就输出-1。分析:主要代码:a[i]=(a[i-1]+a[i-2])%p思路:先将\(a\)数组的第一项和第二项都初始化为1,然后判断是不是能整除\(p\)就行了Code:#incl......
  • P1029 最大公约数和最小公倍数问题(普及−) 题解
    题目传送门想要做这题,我们要先了解一下最大公约数。最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短......