A题是个水题,说逗号也是一个运算符,最后实际上让你输出最右边的数
B题
若分数没有末尾零
若代表score的小数没有末尾零,我们就只要把score当作字串排序就可以了,可以使用trie来解它,甚至使用STL的排序直接排序字串也OK。
有末尾零的话,就把末尾零从字串中全部拔除,排完序后再把零补回来。
#include<bits/stdc++.h>
using namespace std;
struct node
{
string s,c,name;
void go(string p,string na)
{
name=na;
s=c=p;
int i,j,m,ok;
m=p.size();
for(i=m-1;i>0;i--)
{
if(!(p[i]=='0'||p[i]=='.'))
break;
}
if(i!=m-1)
c.erase(i+1,m-i);
}
bool operator<(const node &aa)
{
if(c!=aa.c)
return c>aa.c;
return name<aa.name;
}
void show()
{
cout<<name<<" "<<s<<endl;
}
}v[200005];
int main()
{
ios::sync_with_stdio(false);
int i,j,n;
cin>>n;
for(i=0;i<n;i++)
{
string ss,nn;
cin>>nn;
cin>>ss;
v[i].go(ss,nn);
}
sort(v,v+n);
for(i=0;i<n;i++)
v[i].show();
}
C题我还是没大看明白,题目有些繁琐 ,之后有机会再补
D题
![](https://i-blog.csdnimg.cn/blog_migrate/c4c0908c8f9e61db16638f4897bf6c11.png)
E,F题也留着以后补吧(@“,”@)