能更快吗
  • 板块灌水区
  • 楼主I_Love_DS
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/10/31 22:08
  • 上次更新2024/11/1 13:47:35
查看原帖
能更快吗
1118614
I_Love_DS楼主2024/10/31 22:08
#include <bits/stdc++.h>

using namespace std;

const int N = 2e5 + 50;

map <string, int> mp;
map <string, bool> has;
int n;
char s[N];

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i) {
		scanf("%s", s + 1);
		string d;
		int len = strlen(s + 1);
		for (int j = 1; j <= len; ++j) d.push_back(s[j]);
		int res = 1 << 30;
		for (int j = 0; j < len; ++j, d.pop_back()) 
			if (has[d]) 
				res = min(res, mp[d] + j);
		printf("%d\n", min(res, len));
		d = "";
		for (int j = 1; j <= len; ++j) {
			d.push_back(s[j]);
			bool* p1 = &has[d];
			int* p2 = &mp[d];
			if (!*p1) *p2 = len - j, *p1 = 1;
			else *p2 = min(*p2, len - j);
		}
	}
	return 0;
}
2024/10/31 22:08
加载中...