【6.18校内test】T2分数线划定

分数线划定【题目链接】

这道题也不是什么难题,思路一带而过吧:

SOLUTION:

First.输入n,m,计算m*1.5的值,接着输入编号和成绩,然后我的做法是在输入编号成绩之后,开一个101大小的数组来记录某个分数段的人数(因为分数是0~100所以才敢这么干qwq大了就怂了)。

Second.使用最简单好用的sort进行排序,按照成绩从高到低排,如果成绩相同,编号小的在前面。

Third.进行分数线划定,这里喜欢用while(不会用for写这个的说),首先我们先选择恰为计划录取人数的150%(下取整)的人数,然后要注意的是每选择一个人就把这个人所代表的分数的d数组--;

然后计算到第m个人时,如果第m个人所对应的d数组不为0,那么说明还有相同分数的没有被选上,因此用当前记录到的cnt+=d[p[cnt].s];

Last.输出(这个不必多说)



自我感觉今天考场上写的代码比洛谷上交的思路要好(至少思路清晰)

附代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>

using namespace std;

int n,m,cnt;
int d[101];
struct node {
    int k,s;
}p[5010];

bool cmp(node x,node y){
    if(x.s==y.s) return x.k<y.k;
    return x.s>y.s;
}

int main(){
    scanf("%d %d",&n,&m);
    m*=1.5;
    for(int i=1;i<=n;i++)
     scanf("%d %d",&p[i].k,&p[i].s),d[p[i].s]++;
    sort(p+1,p+n+1,cmp);
    while(cnt<=m){
        if(cnt==m) break;
        cnt++;
        d[p[cnt].s]--;
    }
    if(d[p[cnt].s]!=0) cnt+=d[p[cnt].s];
    cout<<p[cnt].s<<" "<<cnt<<endl;
    for(int i=1;i<=cnt;i++)
      cout<<p[i].k<<" "<<p[i].s<<endl;
    return 0;
} 

#include<bits/stdc++.h>

using namespace std;

int n,m,cnt[101],ans,sor,r;
struct node{
    int k,s;
}p[5010];

bool cmp(node x,node y){
    if(x.s==y.s) return x.k<y.k;
    return x.s>y.s;
}

int main(){
    scanf("%d %d",&n,&m);
    int jh=m*1.5;
    for(int i=1;i<=n;i++)
      scanf("%d %d",&p[i].k,&p[i].s),cnt[p[i].s]++;
    sort(p+1,p+n+1,cmp);
    for(int i=1;i<=n;i++){
        if(ans+1>jh) break;
        if(p[i-1].s==p[i].s) r++;
        if(p[i-1].s!=p[i].s) r=1;

        ans++;
        sor=p[i].s;
    }
    if(cnt[sor]!=r) ans+=(cnt[sor]-r);
    cout<<sor<<" "<<ans<<endl;
    for(int i=1;i<=ans;i++)
      cout<<p[i].k<<" "<<p[i].s<<endl;
}

Luogu Code

end-

原文地址:https://www.cnblogs.com/zhuier-xquan/p/11047068.html

时间: 2024-10-30 06:36:39

【6.18校内test】T2分数线划定的相关文章

洛谷 P1068 分数线划定 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1068 题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根 据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150% (向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试

Luogu 1068 - 分数线划定 - [快速排序]

题目链接:https://www.luogu.org/problemnew/show/P1068 题目描述世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根据计划录取人数的 $150\%$ 划定,即如果计划录取 $m$ 名志愿者,则面试分数线为排名第 $m \times 150\%$(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手. 现在就请你编写程序

P1068 分数线划定

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

【单调栈维护连续区间】2019.1.18模拟赛T2 浇花

这道题是一道单调栈的题 1 题目描述 2 JDFZ在餐厅门前种了一排nn棵花,每棵花都有一个高度.浇花大爷会枚举所有的区间,然后从区间中找出一个高度最矮的花进行浇水.由于浇花大爷浇完水之后就精疲力竭了,所以请你帮助他计算每棵花都被浇了几次水. 3 4 输入格式 5 第一行一个整数nn. 第二行nn个整数,分别表示每棵花的高度. 6 7 输出格式 8 一行nn个整数用空格隔开,分别表示每棵花被浇了几次水. 9 10 样例一 11 input 12 3 13 1 3 5 14 output 15 3

2017-9-3 校内模拟T2取数win

题意:给你一个序列,叫你找一个子序列,使得这个子序列的平均数减去中位数最大. 思路:题面直接说是单峰函数,我也没多想(根本没看懂),现在看来就是排序+三分搜索啦. 代码:(特地去学了下三分..): #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int n; long long lefts,rights,lm,mr; int num[200100],presu

(排序)P1068 分数线划定

题解: 需要注意的是,快排完之后并不是按照编号从小到大的顺序输出 #include<iostream>using namespace std;int r=0;void swap(int &a,int &b){  int t=a;  a=b;  b=t; }void sort(int s[],int l,int r,int k[]){    int mid=s[(l+r)/2];    int i=l,j=r;    do{        while(s[i]>mid) i

18 多线程编程 - 《Python 核心编程》

?? 引言/动机 ?? 线程和进程 ?? 线程和 Python ?? thread 模块 ?? threading 模块 ?? 生产者-消费者问题和 Queue 模块 ?? 相关模块 18.1 引言/动机 18.2 线程和进程 什么是进程? 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据.它们只有在被读取到内 存中,被操作系统调用的时候才开始它们的生命期.进程(有时被称为重量级进程)是程序的一次 执行.每个进程都有自己的地址空间,内存,数据栈以及其它记录其运行轨迹的辅助数据.操作系

[NOIP2009] 普及组

多项式输出 模拟 1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 #include<vector> 8 using namespace std; 9 const int mxn=110; 10 int read(){ 11 int x=0,f=1;

整理小朋友在noi.openjudge上的作业(1)

NOI(题库正在建设中,做题纪录有可能会被删除,请注意) 第一章的统计放前面 1 编程基础之输入输出 10 0 0% 最基础有空补刷 2 编程基础之变量定义.赋值及转换 10 0 0% 最基础有空补刷 3 编程基础之算术表达式与顺序执行 20 0 0% 最基础有空补刷 4 编程基础之逻辑表达式与条件分支 21 0 0% 最基础有空补刷 5 编程基础之循环控制 45 10 22% 最基础有空补刷 6 编程基础之一维数组 15 5 33% 最基础有空补刷 7 编程基础之字符串 35 0 0% 有必要