题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805360043343872
题目分析
题目分析推荐参考文章中柳神的思路,写的很详细
AC代码
#include<bits/stdc++.h>
using namespace std;
map<string,int> h;
bool cmp(string a,string b){
return h[a]!=h[b]?h[a]>h[b]:a<b;
}
int main()
{
int n,k,tmp;
cin>>n>>k;
vector<string> v(n);
for(int i=0;i<n;i++)
{
cin>>v[i]>>tmp;
h[v[i]]=tmp;
}
sort(v.begin(),v.end(),cmp);
int t=0,row=k,m;
while(row)
{
m = row==k?(n/k+n%k):n/k;
string ans[m];
ans[m/2]=v[t];
int j=m/2-1;
for(int i=t+1;i<t+m;i+=2)
ans[j--]=v[i];
j=m/2+1;
for(int i=t+2;i<t+m;i+=2)
ans[j++]=v[i];
for(int i=0;i<m;i++)
{
if(i) cout<<" ";
cout<<ans[i];
}
cout<<endl;
t+=m;
row--;
}
}
这篇博客主要介绍了PAT甲级竞赛中的1109题——GroupPhoto。文章详述了题目的背景、要求,并提供了柳神的解题思路分析。同时,博主给出了通过AC(Accepted)的C++代码实现,该代码实现了根据特定规则对字符串数组进行排序并输出的逻辑。代码中使用了map存储字符串与其对应的值,并定义了一个自定义比较函数用于排序。
1274

被折叠的 条评论
为什么被折叠?



