这个题怎么做啊
查看原帖
这个题怎么做啊
787158
Edge_coduck_s07738楼主2024/1/10 19:37

我的代码:

#include<bits/stdc++.h>
using namespace std;
string sub(string a,int l,int r){
	string b;
	for(int i=l; i<=r; i++) b+=a[i];
	return b;
}
vector<int> oi[500005];
int main(){
	cin.tie(0);
	cout.tie(0);
	int T;
	cin>>T;
	while(T--){
		string a;
		cin>>a;
		int q;
		cin>>q;
		set<int> v;
		while(q--){
			int k,m;
			cin>>k>>m;
			if(oi[k].size()==0){
				set<string> n;
				map<string,int> m;
				for(int i=0;i<a.size()-k; i++){
					string c=sub(a,i,i+k-1);
					n.insert(c);
					if(m[c]==0) m[c]=i+1;
				}
	   			for(auto it: n){
	   				int j=m[it]-1;
					oi[k].push_back(j);
				}
				v.insert(k);
			}
			if(oi[k].size()<m) cout<<"Not found\n";
			else cout<<oi[k][m-1]<<endl;
		}
		for(auto it:v) oi[it].clear();
	}
	return 0;
}

TLE呀TLE,怎么改

2024/1/10 19:37
加载中...