悬3关!CF C题求条!!我瞪了一个小时!!
查看原帖
悬3关!CF C题求条!!我瞪了一个小时!!
1073995
Saint_ying_xtf楼主2024/1/28 00:45
//Author: gsczl71
//Copyright (c) 2024 gsczl71 All rights reserved.

#include<bits/stdc++.h>
#define ll long long
#define i128 __int128
#define ull unsigned long long
#define pii pair<int,int>
#define pll pair<long long, long long>
#define fs first
#define sc second
#define endl '\n'
#define debug puts("AK IOI")
#define re register
#define pb push_back
#define mem(a,x) memset((a),(x),sizeof(a))
#define vi vector<int>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
//const int mod = 998244353;
const int inf = 0x3f3f3f3f, N = 2e5 + 5, M = 2e5 + 5;
const ll linf = 0x3f3f3f3f3f3f3f3f;
int n, k, m;

int dp[200];
void solve() {
	string s;
	memset(dp, 0, sizeof dp);
	cin >> n >> k >> m >> s;
	s = ' ' + s;
	for (int i = 1; i <= m; i++) {
		int minn = 1e9;
		for (int j = 1; j <= k; j++) {
			minn = min(minn, dp[j+'a'-1]);
		}
		dp[s[i]] = max(dp[s[i]], 1 + minn);
	}
	for (int i = 1; i <= k; i++) {
		if (dp[i+'a'-1] < n) {
			cout << "NO\n";
			for (int x = 1; x <= n; x++) cout << char(i + 'a' - 1);
			cout << endl;
			return ;
		}
	}
	cout << "YES\n";
}
signed main() {
	int T = 1;
	cin >> T;
	while (T--) solve();
	return 0;
}


2024/1/28 00:45
加载中...