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. ----转载----【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序

    关于 chrome 扩展的文章,很久之前也写过一篇.清除页面广告?身为前端,自己做一款简易的chrome扩展吧. 本篇文章重在分享一些制作扩展的过程中比较重要的知识及难点. 什么是 chrome 扩展 ...

  2. 利用spring boot构建一个简单的web工程

    1.选择Spring InitiaLizr,    jdk选择好路径 2.设置项目信息 3.这一步是设置选择使用哪些组件,这里我们只需要选择web 4.设置工程名和路径

  3. jquery源码学习

    1,"use strict"; //16行   用在代码开始处,表示之后的代码将按照严格模式执行

  4. 796B Find The Bone

    B. Find The Bone time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  5. Partition Array Into Three Parts With Equal Sum LT1013

    Given an array A of integers, return true if and only if we can partition the array into three non-e ...

  6. Arithmetic Slices LT413

    A sequence of number is called arithmetic if it consists of at least three elements and if the diffe ...

  7. Ubuntu服务器如何搭建PPTPD(原创保证可用)

    Ubuntu是一款基于linux的操作系统,无需许可和订购的费用,Ubuntu Server可以帮助您高效地扩展您的数据中心.它精简的架构和自动化部署的能力让您只需花费更少的运算能力和资源,便可提供更 ...

  8. Go环境下,编译运行etcd与goreman集群管理(1)

    Go环境下编译运行etcd与goreman管理 近几年了Go在比特币.区块链.云服务等相关重要领域贡献突出,作为IT行业的传承“活到老.学到光头”,保持学习心态. 周末放假,补充一二 主题:在Go环境 ...

  9. Linux CPU Hotplug CPU热插拔

    http://blog.chinaunix.net/uid-15007890-id-106930.html   CPU hotplug Support in Linux(tm) Kernel Linu ...

  10. 用python实现数学多元数学方程式计算

    题目:公鸡5元钱一只,母鸡3元钱一只,小鸡3只一块钱,其中公鸡,母鸡,小鸡都必须有,问公鸡,母鸡,小鸡各买多少只刚好凑足100元钱? 一:数学算术分析: x+y+z=100 5x+3y+z/3=100 ...