• 沃老师学生的成绩


    链接:https://www.nowcoder.com/acm/contest/83/B
    来源:牛客网

    题目描述

    第一次期中考终于结束啦!沃老师是个语文老师,他在评学生的作文成绩时,给每位学生的分数都是一个小于10的非负小数。

    Amy 8.999999999999999999999999999999999999999990000

    Bob 8.9999999999999999999999999999999999999999800

    Cat 8.9999999999999999999999999999999999999999899999999

    沃老师并不会告诉大家分数的排名,但学生间竞争激烈,大家都想知道自己的作文成绩在班上的排名。
    但由于作文分数的小数部分可能超级长,难以用肉眼比较两个数的大小关系,请你帮忙写个程序,把所有学生按照作文分数排序吧〜
     

    输入描述:

    输入共有N + 1行。
    第一行有一个正整数N,代表班上有几个人。
    接下来N行中的第i行,包含一个字符串namei,以及一个小数scorei,分别代表第i个人的名字以及第i个人的作文得分。

    输出描述:

    输出总共N行,每行由一个名字和一个小数构成,第i行代表着分数第i高的人的名字以及他的作文得分,代表作文得分的小数必须和输入一模一样,也就是原本末尾有多少零,输出也要有相同数量的零。
    若分数相同,则名字字典序比较小的放在前面。

    示例1

    输入

    3
    Amy 8.999999999999999999999999999999999999999990000
    Bob 8.9999999999999999999999999999999999999999800
    Cat 8.9999999999999999999999999999999999999999899999999

    输出

    Amy 8.999999999999999999999999999999999999999990000
    Cat 8.9999999999999999999999999999999999999999899999999
    Bob 8.9999999999999999999999999999999999999999800


    示例2

    输入

    6
    Aa1 3.
    Bb2 2.
    Cc3 1.
    a 5.
    A 5.0
    9 5.00

    输出

    9 5.00
    A 5.0
    a 5.
    Aa1 3.
    Bb2 2.
    Cc3 1.

    用sort,但排序之前需要把后置0去掉在比较,输出的时候就要原样输出了。有一点需要注意,用自定义sort时,需要用引用,不然会超时。具体是不使用引用相当于把字符串复制一遍了。
    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #define ll long long
    using namespace std;
    const int N = 2e5+10;
    char str[N];
    struct Nod {
    	string s, ss;
    	string sss;
    }nod[N];
    inline bool cmp(Nod a, Nod b) {
    	if(a.sss != b.sss) return a.sss > b.sss;
    	else return a.s < b.s;
    }
    int main() {
    	ios::sync_with_stdio(false);
    	int n;
    	cin >> n;
    	for(int i = 0; i < n; i ++) {
    		cin >> nod[i].s >> nod[i].ss;
    		int len = nod[i].ss.length()-1;
    		while(nod[i].ss[len] == '0') len--;
    		nod[i].sss = nod[i].ss.substr(0,len+1);
    	}
    	sort(nod,nod+n,cmp);
    	for(int i = 0; i < n; i ++) {
    		cout << nod[i].s << ' ' << nod[i].ss << endl;
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Netty入门
    个人网站一步一步搭建——(20)成功在本地IIS运行
    个人网站一步一步搭建——(19)开始为博客园页面绑定数据
    不得了的try catch
    个人网站一步一步搭建——(18)后台整合
    sql拆分列 时间拆分 日、月、年
    个人网站一步一步搭建——(17)简历模块
    个人网站一步一步搭建——(16)发布动态
    MVC将Base64 保存为图片
    JS图片多个上传,并压缩为Base64
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/8824293.html
Copyright © 2020-2023  润新知