• 洛谷1068 分数线划定 解题报告


    洛谷1068 分数线划定

    本题地址: http://www.luogu.org/problem/show?pid=1068

    题目描述

    世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对
    所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根
    据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%
    (向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有
    选手。 
    现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成
    绩。

    输入输出格式

    输入格式:

    第一行,两个整数 n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其
    中 n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。输入数据保证 m*150%
    向下取整后小于等于 n。 
    第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号 k
    (1000 ≤ k ≤ 9999)和该选手的笔试成绩 s(1 ≤ s ≤ 100)。数据保证选手的报名号各
    不相同。

    输出格式:

    第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为
    进入面试的选手的实际人数。 
    从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手
    的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的
    顺序输出。

    输入输出样例

    输入样例#1:

    6 3 
    1000 90 
    3239 88 
    2390 95 
    7231 84 
    1005 95 
    1001 88

    输出样例#1:

    88 5 
    1005 95 
    2390 95 
    1000 90 
    1001 88 
    3239 88 

    说明

    【样例说明】 
    m*150% = 3*150% = 4.5,向下取整后为 4。保证 4 个人进入面试的分数线为 88,但因为 88
    有重分,所以所有成绩大于等于 88 的选手都可以进入面试,故最终有 5 个人进入面试。 


    NOIP 2009 普及组 第二题

    题解

    排序

    多次使用排序。按成绩降序排序,成绩相同的按报名号升序排序。

    取整后的人数不一定为进入面试的人数,但可以确定的是取整后的人的成绩为分数线。

    最后按顺序将序列中成绩大于等于分数线的人的报名号以及成绩依次输出。

    下面附上代码。

    代码

    1. program score;  
    2. var  
    3.   n,m,f,p,c,i,j:longint;  
    4.   a:array[1..5000,1..2] of longint;  
    5. begin  
    6.   readln(n,m);  
    7.   f:=0;  
    8.   c:=trunc(m*1.5);  
    9.   p:=c;  
    10.   for i:=to n do  
    11.     readln(a[i,1],a[i,2]);  
    12.   for i:=to n-do  
    13.     for j:=i+to n do  
    14.       if (a[i,2]<a[j,2]) or ((a[i,2]=a[j,2]) and (a[i,1]>a[j,1])) then  
    15.         begin  
    16.           f:=a[i,1];  
    17.           a[i,1]:=a[j,1];  
    18.           a[j,1]:=f;  
    19.           f:=a[i,2];  
    20.           a[i,2]:=a[j,2];  
    21.           a[j,2]:=f;  
    22.         end;  
    23.   while a[c,2]=a[c+1,2] do  
    24.     begin  
    25.       inc(p);  
    26.       inc(c);  
    27.     end;  
    28.   writeln(a[c,2],' ',p);  
    29.   for i:=to p do  
    30.     writeln(a[i,1],' ',a[i,2]);  
    31. end.  

    (本文系笔者原创,未经允许不得转载)

    博文系博主原创,转载请注明出处 o(* ̄▽ ̄*)ブ 更多博文源自https://www.cnblogs.com/yzm10
  • 相关阅读:
    C#进阶之路(五):Linq初识
    C#进阶之路(四):拉姆达
    SQL夯实基础(五):索引的数据结构
    SQL夯实基础(四):子查询及sql优化案例
    SQL夯实基础(三):聚合函数详解
    C#进阶之路(三):深拷贝和浅拷贝
    SQL夯实基础(二):连接操作中使用on与where筛选的差异
    前端面试题整理—HTML/CSS篇
    CSS盒模型
    node的优缺点及应用场景
  • 原文地址:https://www.cnblogs.com/yzm10/p/4748930.html
Copyright © 2020-2023  润新知