潍坊一中校内模拟赛 《千与千寻》-1 LuoguT96523 题解

题目链接

题目大意:给定n个字符串,输出每个字符串出现的行号,字符串按字典序倒序输出,行号正序输出。

思路:定义一个map<string,vector >映射,string存字符串内容,vector 存字符串出现的行号。对每个string的vector进行一遍sort,由于map自动排序,所以倒序输出所有string和vector即可。

本题难度约为NOIPD1T1,普及/提高-。

#include<map>
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
map<string,vector<int> >M;
map<string,vector<int> >::reverse_iterator iter;
string s;
int n,m;
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(register int i=1;i<=n;i++){
        cin>>s;
        M[s].push_back(i);
    }
    for(iter=M.rbegin();iter!=M.rend();++iter,cout<<'\n'){
        sort(iter->second.begin(),iter->second.end());
        cout<<iter->first<<" ";
        for(register int i=0;i<iter->second.size();i++)cout<<iter->second[i]<<" ";
    }
}

猜你喜欢

转载自www.cnblogs.com/LHYLHY/p/11430660.html