题解:AT_abc416_c [ABC416C] Concat (X-th)

比较板的搜索。

就是从 NN 个数里选出 KK 个数,可以重复。

将搜出的数当作字符串下标,将字符串连接起来,放到一个 vector 里面,最后将 vector 排序,输出第 X1X-1 个就好了。

X1X-1 是因为我的下标是从 00 开始的。

赛时代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<bits/stdc++.h>
using namespace std;
int n,k,x;
string s[114514];
vector<string> ans;
void dfs(int x,string res){
if(x>k){
//cout<<res<<"\n";
ans.push_back(res);
return ;
}
for(int i=1;i<=n;i++)dfs(x+1,res+s[i]);
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>k>>x;
for(int i=1;i<=n;i++)cin>>s[i];
dfs(1,"");
sort(ans.begin(),ans.end());
cout<<ans[x-1];
return 0;
}


题解:AT_abc416_c [ABC416C] Concat (X-th)
http://zhoujunchen666.github.io/2025/07/27/题解:AT-abc416-c-ABC416C-Concat-X-th/
作者
zhoujunchen
发布于
2025年7月27日
许可协议