1 solutions

  • 0
    @ 2025-6-5 16:46:01

    本题的核心在于实现一个自定义的字典序排序,我们可以使用Lambda表达式进行自定义排序规则

    #include<bits/stdc++.h>
    using namespace std;
    const int N=50010;
    string s[N];
    int order[300];
    int main()
    {	
    	string s1;
    	int n;
    	cin>>s1>>n;
    	for(int i=0;i<s1.size();i++)//遍历整个序列 
    	{
    		order[s1[i]]=i;	
    	} 
    	for(int i=0;i<n;i++) //输入需要排序的字符串 
    	{
    		cin>>s[i];
    	}
    	sort(s,s+n,[&](const string &a,const string &b){ //将a和b按照给定的顺序排序 
    		for(int i=0;i<a.size()&&i<b.size();i++)
    		{
    			if(a[i]!=b[i]) return order[a[i]]<order[b[i]];
    		}
    		return a.size()<b.size();
    	});
    	for(int i=0;i<n;i++)
    	{
    		cout<<s[i]<<endl;
    	}
    	return 0;
    }
    
    
    • 1

    【例】[ABC219C] 新字典序排序(Neo-lexicographic Ordering)

    Information

    ID
    2617
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    # Submissions
    1
    Accepted
    1
    Uploaded By