题解:P12171 [蓝桥杯 2025 省 Python B] 最长字符串【缺少 words.txt】
根据题意给每个字符串一个统计属性,dfs 即可。由于长度递增无需设置 vis 数组,集合合并优化即可。
import sys,time;t=time.time();a={};c={(0,)*26};d=set();sys.stdin=open('words.txt','r')
for i in range(50000):
s=input();b=[0]*26
for i in s[:-1]:b[ord(i)-97]+=1
b=tuple(b)
if b in a:a[b].append(s)
else:a[b]=[s]
while c:
e='~'
for i in c:
for j in a[i]:
e=min(e,j);k=list(i);k[ord(j[-1])-97]+=1;k=tuple(k)
if k in a:d.add(k)
c,d=d,set()
print(e,time.time()-t)
上述程序输出正确答案和用时(防止 TLE 做法的出现)。答案为字符串 afplcu,本地用时为