多字符串(strings)
题目描述
给定 n 个字符串:s1,s2,…,sn,每个字符串的长度不超过 8。
对于每个字符串 si,请判断是否存在两个字符串 sj 和 sk,使得:
si=sj+sk
其中 + 表示字符串拼接。
注意:
- j 可以等于 k;
- 给定的字符串中可能存在完全相同的字符串;
- 只要能找到任意两个给定字符串拼接成 si,就认为 si 满足条件。
例如,字符串 damo 和 nthrone 拼接后可以得到 damonthrone。
输入格式
第一行包含一个整数 t,表示测试用例的数量。
对于每个测试用例:
第一行包含一个整数 n,表示字符串数量。
接下来 n 行,每行包含一个非空字符串 si。
字符串只包含小写英文字母,且长度不超过 8。
输出格式
对于每个测试用例,输出一个长度为 n 的二进制字符串。
如果第 i 个字符串可以由给定字符串中的两个字符串拼接得到,则第 i 位输出 1,否则输出 0。
输入输出样例 #1
输入 #1
2
5
abab
ab
abc
abacb
c
3
x
xx
xxx
输出 #1
10100
011
样例解释 #1
对于第 1 组测试数据:
共有 5 个字符串:
abab
ab
abc
abacb
c
其中:
- abab 可以由 ab+ab 拼接得到,因此输出 1;
- ab 不能由两个给定字符串拼接得到,因此输出 0;
- abc 可以由 ab+c 拼接得到,因此输出 1;
- abacb 不能由两个给定字符串拼接得到,因此输出 0;
- c 不能由两个给定字符串拼接得到,因此输出 0。
所以输出:10100
对于第 2 组测试数据:
共有 3 个字符串:
x
xx
xxx
其中:
- x 不能由两个非空字符串拼接得到,因此输出 0;
- xx 可以由 x+x 拼接得到,因此输出 1;
- xxx 可以由 x+xx 拼接得到,因此输出 1。
所以输出:011
输入输出样例 #2
输入 #2
2
6
a
b
ab
ba
aa
bb
5
damo
nthrone
damonthrone
throne
damon
输出 #2
001111
00100
样例解释 #2
对于第 1 组测试数据:
- ab=a+b;
- ba=b+a;
- aa=a+a;
- bb=b+b。
因此输出:001111
对于第 2 组测试数据:
damonthrone 可以由 damo+nthrone 拼接得到,其余字符串都不能由两个给定字符串拼接得到。
因此输出:00100
数据范围与约定
对于所有测试数据,保证:
1≤t≤104,1≤n≤105
1≤∣si∣≤8
需要注意 :damonthrone 只是为了写一下团队名字,虽然长度超过 8 但是不影响。
保证所有测试用例中 n 的总和不超过 105。
| 测试点 |
分值 |
t |
∑n |
∣si∣ |
特殊性质 |
| 1∼2 |
20 |
≤5 |
≤20 |
≤4 |
无 |
| 3∼4 |
≤20 |
≤100 |
≤2 |
A |
| 5∼6 |
≤100 |
≤1000 |
≤8 |
B |
| 7∼8 |
≤1000 |
≤104 |
无 |
| 9∼10 |
≤104 |
≤105 |
特殊性质 A:保证所有字符串长度不超过 2。
特殊性质 B:保证同一个测试用例内,所有字符串互不相同。