QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#212733#6635. Strange KeyboardzltWA 72ms110516kbC++142.0kb2023-10-13 20:07:222023-10-13 20:07:22

Judging History

你现在查看的是最新测评结果

  • [2023-10-13 20:07:22]
  • 评测
  • 测评结果:WA
  • 用时:72ms
  • 内存:110516kb
  • [2023-10-13 20:07:22]
  • 提交

answer

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 1000100;

ll n, m, K, len[maxn], ch[maxn][26], ntot, f[maxn], g[maxn], lsh[maxn], tot, h[maxn];
char t[maxn];
string s[maxn];

void solve() {
	for (int i = 0; i <= ntot; ++i) {
		f[i] = 9e18;
		for (int j = 0; j < 26; ++j) {
			ch[i][j] = 0;
		}
	}
	ntot = tot = m = 0;
	scanf("%lld%lld", &n, &K);
	for (int i = 1; i <= n; ++i) {
		cin >> s[i];
		len[i] = (ll)s[i].size();
		s[i] = ' ' + s[i];
		lsh[++tot] = len[i];
	}
	sort(lsh + 1, lsh + tot + 1);
	tot = unique(lsh + 1, lsh + tot + 1) - lsh - 1;
	for (int i = 0; i <= m; ++i) {
		g[i] = -1;
	}
	g[0] = 0;
	queue<int> q;
	q.push(0);
	while (q.size()) {
		int u = q.front();
		q.pop();
		if (u > K) {
			if (g[u - K] == -1) {
				g[u - K] = g[u] + 1;
				q.push(u - K);
			}
		}
		for (int i = 1; i <= tot; ++i) {
			if (u + lsh[i] <= m && g[u + lsh[i]] == -1) {
				g[u + lsh[i]] = g[u] + 1;
				q.push(u + lsh[i]);
			}
		}
	}
	for (int i = 1; i <= n; ++i) {
		int p = 0;
		for (int j = 1; j <= len[i]; ++j) {
			if (!ch[p][s[i][j] - 'a']) {
				ch[p][s[i][j] - 'a'] = ++ntot;
			}
			p = ch[p][s[i][j] - 'a'];
			f[p] = min(f[p], (len[i] - j) / K + ((len[i] - j) % K ? g[K - (len[i] - j) % K] + 1 : 0) + 1);
		}
	}
	scanf("%s", t + 1);
	int le = strlen(t + 1);
	h[0] = 0;
	for (int i = 1; i <= le; ++i) {
		h[i] = 1e18;
	}
	for (int i = 0; i < le; ++i) {
		int p = 0;
		for (int j = i + 1; j <= le; ++j) {
			if (!ch[p][t[j] - 'a']) {
				break;
			}
			p = ch[p][t[j] - 'a'];
			h[j] = min(h[j], h[i] + f[p]);
		}
	}
	printf("%lld\n", h[le] > 1e17 ? -1LL : h[le]);
}

int main() {
	mems(f, 0x3f);
	int T = 1;
	scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 4ms
memory: 53220kb

input:

2
2 3
defgh
abc
abcde
1 1
a
b

output:

3
-1

result:

ok 2 number(s): "3 -1"

Test #2:

score: 0
Accepted
time: 22ms
memory: 53516kb

input:

1
1413 4867
yumnkkghwtqnhpmmsbfwypcwudihegsvtdaykueuqozagpgdnhbwzoqrqswyctzonwmjdjmmpyzbyihhpyznmqltcuckqmcybbdafoexqztxhzlfjowznisnxtgoiqjztogldyegajmegalqgawrzotuntocmsagvkzdnwhmaewuxiuhvintpzwyrkgapnmegpveyuuorrfvrfakjyetfaoqtvwghlslsvmahrkvzkwpaviufknrpuapicqdnn
yumnkkghwtqnhpmmsbfwypcwudihegsvt...

output:

10

result:

ok 1 number(s): "10"

Test #3:

score: 0
Accepted
time: 19ms
memory: 51104kb

input:

10
446 4905
afigcjhcgagabbiccehjcjajigghgbjjadccicghggijjdfeciaccgheedjdhgfjdfdbgidbbdjaiehhceeehchhabhaideggjbjajgfgicfdggahhbjgdebccbgbiedhehaebdccdfdffaacjcfbgjeegbahhbgcdjigijajheidchbddicehhhjbeiaajgedhdcjiefdgdbjjfaegheeidieheecaicciaajbabiidcecefgiicccdidegeica
afigcjhcgagabbiccehjcjajigghgbj...

output:

3
2
2
11
6
5
1
1
1
1

result:

ok 10 numbers

Test #4:

score: 0
Accepted
time: 18ms
memory: 50908kb

input:

100
140 4879
baabaababbababbaabababaaababbbabbbbbbabbababbbabbbbabbbbbbaabbbbbbbbabaabbbaabaabbbaabbabaabaabbbabbbababbbaabbabaaaaabbaaabbbabb
baa
baabaababbababbaabababaaababbbabbbbbbabbab
baabaababbababbaabababaaabab
baabaababbababbaabababaaababbbabbb
baabaababbababbaabababaaababbbabbbbbbabbababbb...

output:

1
1
1
1
3
1
1
1
1
1
1
3
2
1
1
1
2
1
1
2
1
1
1
1
1
1
1
1
1
4
3
2
1
2
1
1
1
1
1
2
1
1
1
3
1
1
1
2
1
1
1
2
3
1
1
1
2
1
1
1
1
1
1
1
1
3
2
3
1
3
1
1
2
1
2
3
2
1
1
1
3
2
1
2
1
1
1
1
1
1
1
1
1
1
1
1
2
1
4
1

result:

ok 100 numbers

Test #5:

score: -100
Wrong Answer
time: 72ms
memory: 110516kb

input:

1
7 4864
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

7

result:

wrong answer 1st numbers differ - expected: '205', found: '7'