会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员,或
购买
该题目所属题库
,可解锁完整内容。
用一个整数上的26个位表示每个字母是否出现
然后答案就被转换成了每个B[i] | A能选到的B[j]数量之和
这是一种很常用的小技巧,用来优化一些时候一些比较大但是很多空间没有被用到的状态
当然如果不用这个应该也是可以过的,但是复杂度会乘上一个26的常量。。。
#pragma GCC optimize("O3")
P1144.2023.4.2-研发岗-第三题-规约等
题目内容
塔子哥正在备战考研,他刚学到了字符串一章,看到课后习题发现了一种新的运算规则,写作(=),称之为“规约等"。
对规约等的定义描述如下:有两个字符串s和t,s的字符去重后所构成的集合为S,t的字符去重后所构成的集合为T,如果S和T相等(即S和T的元素完全相等),则s和t就具有规约等的关系。
例如:abcdd(=)aaabcd.因为两个字符串都是由abcd四个字符组成。
现在问题来了,给定一个标定字符串A和一组字符串B1,B2,...,Bn,问有多少种i和j的选择(i=j),可以满足等式
(+代表字符串拼接)
B[i]+A(=)B[j]
输入描述
第一行:宇符串A(1≤∣A∣≤50)
第二行:后续输入字符串的数量n(1≤n≤100000)
第三行至最后一行:每行一个字符串:B1,B2,...,Bn(1≤∣Bi∣≤50)
输出描述
限制条件:从这一批字符串中选出两个字符串Bi和Bj(i不等于j,但Bi可能和Bj相同)。将A和Bi字符串拼接后得到的字符串和Bj为规约等的关系,输出满足限制条件的i和j的选择有多少种。
示例1
输入
abbc
4
aabbcc
ccbbaa
c
c
输出
6