Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38273 黄子睿 【J】T3 C++ 解答错误 0 16 MS 10680 KB 949 2025-09-25 14:21:33

Tests(0/20):


#include<bits/stdc++.h> using namespace std; int T,n,k; string x; string ans; bool flag[26]; int num,num1; int vis[200005][26]; int main(){ cin>>T; for(int i=1;i<=T;i++){ cin>>k>>x; n=x.length(); ans=""; x=' '+x; for(int j=0;j<26;j++){ vis[n][j]=-1; flag[j]=0; } vis[n][x[n]-'A']=n; num=0; num1=0; for(int j=n-1;j>=1;j--){ for(int w=0;w<26;w++){ vis[j][w]=vis[j+1][w]; } vis[j][(int)(x[j]-'A')]=j; } for(int j=0;j<26;j++){ if(vis[1][j]!=-1) num1++; } int t=1; if(k>=num1){ cout<<-1<<endl; continue; } while(num+k!=num1){ for(int j=0;j<26;j++){ int y=0; for(int w=0;w<26;w++){ if(vis[vis[t][j]][w]!=-1&&flag[w]==0) y++; } if(y+num+k>=num1){ if(!flag[j]){ num++; flag[j]=1; } ans=ans+(char)(j+'A'); t=vis[t][j]+1; break; } } } cout<<ans<<endl; } return 0; }


测评信息: