1. 评学习小标兵

【问题描述】

东东所在的班级有 N 名同学,期末考试进行了数学、语文、英语、地理四门功课的测试。班主任要将这 N 名学生中总分前三名定为本学期的“学习小标兵”。现在给出这N 名学生的姓名和各科成绩,请你编程找到总分前三名,并依次输出他们的姓名。所给数据不会有总分相同的情况(使用快速排序完成)。

【输入格式】

输入包含 N+1 行,第一行仅有一个正整数 N (N≤40),表示东东班里学生的总数,接下来的 N 行,每行描述一个学生的考试信息,依次为姓名、数学成绩、语文成绩、英语成绩与地理成绩,两两之间用一个空格分隔。注意:姓名(不会同名)都用小写字母表示(不超过 10 个字母),成绩全都是不超过 200 的非负整数。

【输出格式】

输出包含三行,每行仅包含一个学生的姓名,依次为第一名到第三名学生的姓名。

【样例输入】

4

jing 98 90 87 74

ming 96 92 85 97

jun 95 78 56 91

hong 95 100 85 78

【样例输出】

ming

hong

jing

#include<iostream>
using namespace std;
struct p {
char name[];
int math;
int chinese;
int eglish;
int geo;
int sum;
};
p a[];
void quick_sort(int left,int right) {
if(left >= right) return;
int i = left;
int j = right;
p x = a[left];
while(i < j) {
while(i < j && a[j].sum < x.sum)
j--;
a[i] = a[j];
while(i < j && a[i].sum > x.sum)
i++;
a[j] = a[i];
}
a[i] = x;
quick_sort(left,i-);
quick_sort(i+,right);
}
int main() {
int n,f=,s=,i,j;
cin>>n;
for(i=; i<n; i++) {
cin>>a[i].name>>a[i].math>>a[i].chinese>>a[i].eglish>>a[i].geo;
a[i].sum = a[i].math+a[i].chinese+a[i].eglish+a[i].geo;
}
quick_sort(,n-);
for(i=; i<; i++)
cout<<a[i].name<<endl; return ;
}

2.挑选宇宙总统

【问题描述】

地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统(使用快速排序和归并排序完成)。

【输入格式】

第一行为一个整数n,代表竞选总统的人数。

接下来有n行,分别为第一个候选人到第n个候选人的票数。

【输出格式】

共两行,第一行是一个整数m,为当上总统的人的号数。

第二行是当上总统的人的选票。

说明:票数小于10000位数字。n<=20

【样例输入】

5

98765

12365

87954

1022356

985678

【样例输出】

4

1022356

#include<iostream>
#include<cstring>
#include<algorithm>
const int maxn=;
using namespace std;
struct node{
string s;
int id;
} a[maxn];
bool cmp(node x,node y){
if(x.s.size()==y.s.size())
return x.s>y.s;
else return x.s.size()>y.s.size();
}
int main(){
int n;
cin >> n;
for(int i=;i<=n;++i)
cin>>a[i].s,a[i].id=i;
sort(a+,a++n,cmp);
cout<<a[].id<<endl<<a[].s;
return ;
}

1.排序算法

【问题描述】

快速排序和归并排序算法是信息学竞赛的必备算法。对于快速排序和归并排序算法还不是很熟练的同学需要多多练习,掌握后独立完成。

【输入格式】

输入文件sort.in的第一行为一个正整数N,(1 ≤ N ≤ 100000)

第二行包含N个空格隔开的正整数,为你需要进行排序的数,每个数据保证不超过100000000。

【输出格式】

输出文件sort.out将给定的N个数从大到小输出,数之间使用空格隔开,行末换行并且没有空格。

【样例输入】

5

4 2 4 5 1

【样例输出】

5 4 4 2 1

#include <fstream>
using namespace std;
ifstream cin("sort.in");
ofstream cout("sort.out");
int a[],n;
void quick_sort(int left,int right){
if(left >= right) return;
int i = left;
int j = right;
int x = a[left];
while(i < j){
while(i < j && x <= a[j]) j--;
a[i] = a[j];
while(i < j && x >= a[i]) i++;
a[j] = a[i];
}
a[i] = x;
quick_sort(left,i-);
quick_sort(i+,right);
}
int main(){
cin >> n;
for(int i = ;i < n;i++){
cin >> a[i];
}
quick_sort(,n-);
for(int i = n-;i >=;i--){
cout << a[i] << " ";
}
cin.close();
cout.close();
return ;
}

noip第20课作业的更多相关文章

  1. noip第5课作业

    1.     计算税收 [问题描述] 对某产品征收税金,在产值1万元以上收税5%:在1万元以下但在5000元或者以上的征收税3%:在5000元以下但在1000元或以上征收税2%:1000元以下的免收税 ...

  2. noip第29课作业

    1.   钢条切割 [问题描述] 一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi.那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大. ...

  3. noip第28课作业

    分段数列 [问题描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入格式: 输入第1行包含两个正整 ...

  4. noip第25课作业

    1.   求一个有向图所有顶点入度的和 输入有向图的顶点个数,边数以及各顶点之间的关联情况,要求求出这个有向图的所有顶点入度的总和. [输入格式] 第1行:2个空格分开的整数n(2<=n< ...

  5. noip第22课作业

    1.   数字分解 [问题描述] 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和,当n等于5时有6种拆分方法: 5=1+1+1+1+1 5=1+1+1+2 5=1+1+3 5=1+2+ ...

  6. noip第21课作业

    1. 遍历二叉树 [问题描述] 以先序的方式建立一棵二叉树,空结点用‘#’号表示,例如:abd###ce##f##,将建立一棵如下的二叉树: 输出其中序序列和后序序列,其中总结点个数不超过100. 输 ...

  7. noip第18课作业

    1. 银行取款 [题目描述] 在现代文明社会中,大家在诸如银行办理业务.车站买票等活动时都很文明没有插队的现象,本着“先来先服务”的规矩. 新年马上到了,明明的爸爸打算上银行去取点钱,带着一向表现很好 ...

  8. noip第12课作业

    1.    输出低于班级平均分的学生信息 [问题描述] 输入N个学生的姓名和语文.数学的得分,求平均分低于班级平均分的学生,将其信息全部输出.分数相同的按输入先后输出. 输入格式:第1行,有一个整数N ...

  9. noip第6课作业

    1.    数据统计 [问题描述] 输入N个整数,求出它们的最小值.最大值和平均值(保留3位小数).输入保证这些数都是不超过1000的整数.(1<=N<=1000) [样例输入] 8 2 ...

随机推荐

  1. python sockerserver tcp 文件下载 udp

    #tcp serverclass MyHandler(socketserver.BaseRequestHandler): def handle(self): # 通信循环 while True: tr ...

  2. javascript DOM基础操作

    DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM ...

  3. PAT 1025 反转链表 (25)(STL-map+思路+测试点分析)

    1025 反转链表 (25)(25 分) 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4, ...

  4. 在iOS中将string转成UTF-8编码

    在iOS开发中,特别是在对Web服务调用的时候,经常会遇到请求参数为中文的情况,那么这时候就需要将Url转成UTF-8编码才能进行请求.使用stringByAddingPercentEscapesUs ...

  5. 循环&信息添加&颜色修改

            #import "AViewController.h" @interface AViewController () <UIActionSheetDelegat ...

  6. Centos Raid0 与Raid1 的备注

    http://www.360doc.com/content/13/1209/21/14661619_335823338.shtml raid0 如果坏了一块硬盘.那么数据就无法读取了 raid1 如果 ...

  7. Nginx 如何限定IP访问

    在nginx.conf中的server限制段中.deny IP.表示需要限制该IP不可访问.allow IP表示权该IP可以访问. 如上图.表示阻止192.168.1.122的IP的访问.那当然也可以 ...

  8. linux学习第二天 (Linux就该这么学)

    2018年11月10日,今天是学习的第二天 今天学习了安装vmware workstation12的安装及怎么安装 redhat7系统,在新建虚拟机时注意要选择“稍后安装操作系统”要vmwark wo ...

  9. 新手必看,史上最全的iOS开发教程集锦,没有之一!

    最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...

  10. Python3实战系列之二(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:安装python和pycharm.要编写并运行python程序就需要电脑有开发工具和运行环境,所以此篇就是安装编辑和运行python程序的软件 ...