博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++奥赛一本通刷题记录(排序)
阅读量:5014 次
发布时间:2019-06-12

本文共 5848 字,大约阅读时间需要 19 分钟。

C++奥赛一本通刷题记录(排序)

2017.11.16 By gwj1139177410

都是拿STL水的…别怪我……

  1. 谁考了第k名

    #include
    #include
    using namespace std;const int maxn = 110;struct node{ int id; float score; }a[maxn];int cmp(node a, node b){ return a.score==b.score?a.id
    b.score; }int main(){ int n, k; cin>>n>>k; for(int i = 0; i < n; i++)cin>>a[i].id>>a[i].score; sort(a,a+n,cmp); cout<
    <<" "<
    <<"\n"; return 0;}
  2. 奇数单增序列

    #include
    #include
    using namespace std;const int maxn = 550;int n, a[maxn];int main(){ int t; cin>>t; while(t--){ cin>>a[n]; if(a[n]%2==1)n++; } sort(a,a+n); for(int i = 0; i < n-1; i++)cout<
    <<","; cout<
    <<"\n"; return 0;}
  3. 成绩排序

    #include
    #include
    #include
    using namespace std;const int maxn = 110;struct node{ string name; int score; }a[maxn];int cmp(node a, node b){ return a.score==b.score?a.name
    b.score; }int main(){ int n; cin>>n; for(int i = 0; i < n; i++)cin>>a[i].name>>a[i].score; sort(a,a+n,cmp); for(int i = 0; i < n; i++)cout<
    <<" "<
    <<"\n"; return 0;}
  4. 奖学金

    #include
    #include
    #include
    using namespace std;const int maxn = 310;struct node{ int id, score, chinese; }a[maxn];int cmp(node a, node b){ if(a.score != b.score)return a.score>b.score; if(a.chinese != b.chinese)return a.chinese>b.chinese; return a.id
    >n; for(int i = 0; i < n; i++){ int x,y,z; cin>>x>>y>>z; a[i].id=i+1; a[i].chinese=x; a[i].score=x+y+z; } sort(a,a+n,cmp); for(int i = 0; i < 5; i++)cout<
    <<" "<
    <<"\n"; return 0;}
  5. 分数线划定

    #include
    #include
    #include
    using namespace std;const int maxn = 5050;struct node{ int id, score; }a[maxn];int cmp(node a, node b){ if(a.score != b.score)return a.score>b.score; return a.id
    >n>>m; m=m*1.5; for(int i = 1; i <= n; i++) cin>>a[i].id>>a[i].score; sort(a+1,a+n+1,cmp); for(int i = m+1; i <= n; i++) if(a[i].score==a[m].score)m++; cout<
    <<" "<
    <<"\n"; for(int i = 1; i <= m; i++) cout<
    <<" "<
    <<"\n"; return 0;}
  6. 整数奇偶排序

    #include
    #include
    #include
    using namespace std;const int maxn = 20;int a[maxn], b[maxn], an, bn;bool cmp(int a, int b){
    return a>b;}int main(){ for(int i = 1; i <= 10; i++){ int x; cin>>x; if(x%2==1)a[an++]=x; else b[bn++]=x; } sort(a,a+an,cmp); sort(b,b+bn); for(int i = 0; i < an; i++)cout<
    <<" "; for(int i = 0; i < bn; i++)cout<
    <<" "; return 0;}
  7. 合影效果

    #include
    #include
    #include
    #include
    using namespace std;const int maxn = 50;int an, bn;float a[maxn], b[maxn];bool cmp(float a, float b){
    return a>b;}int main(){ int n; cin>>n; for(int i = 1; i <= n; i++){ string s; cin>>s; float x; cin>>x; if(s[0]=='m')a[an++]=x; else b[bn++]=x; } sort(a,a+an); sort(b,b+bn,cmp); for(int i = 0; i < an; i++)printf("%.2f ", a[i]); for(int i = 0; i < bn; i++)printf("%.2f ", b[i]); return 0;}
  8. 病人排队

    #include
    #include
    #include
    using namespace std;const int maxn = 110;int an, bn;struct node{ string id; int age, que; }a[maxn], b[maxn];bool cmp1(node a, node b){ return a.age!=b.age?a.age>b.age:a.que
    >n; for(int i = 1; i <= n; i++){ string s; int x; cin>>s>>x; if(x>=60){ a[an].id=s; a[an].que=i; a[an++].age=x; } else { b[bn].id=s; b[bn].que=i; b[bn++].age=x; } } sort(a,a+an,cmp1); sort(b,b+bn,cmp2); for(int i = 0; i < an; i++)cout<
    <<"\n"; for(int i = 0; i < bn; i++)cout<
    <<"\n"; return 0;}
  9. 明明的随机数

    #include
    #include
    using namespace std;const int maxn = 110;int a[maxn];int main(){ int n; cin>>n; for(int i = 0; i < n; i++)cin>>a[i]; sort(a,a+n); n = unique(a,a+n)-a; cout<
    <<"\n"; for(int i = 0; i < n; i++)cout<
    <<" "; return 0;}
  10. 单词排序

    #include
    #include
    #include
    #include
    using namespace std;const int maxn = 110;string a[maxn];int main(){ string s; getline(cin,s); int n = 0; stringstream ss(s); while(ss>>a[n])n++; sort(a,a+n); n = unique(a,a+n)-a; for(int i = 0; i < n; i++)cout<
    <<"\n"; return 0;}
  11. 出现次数超过一半的数

    //垃圾题目,浪费我一节课,我TM就桶排序了,你来打我啊#include
    #include
    using namespace std;int n, a[1010];int main(){ cin>>n; for(int i = 1; i <= n; i++){ int x; cin>>x; a[x+100]++; } int t=0, tt=0; for(int i = 1; i <= 200; i++) if(a[i]>tt){ t=i; tt=a[i]; } if(tt>n/2)cout<
    <<"\n";else cout<<"no\n"; return 0;}
  12. 统计字符数

    #include
    #include
    using namespace std;int a[40];int main(){ string s; getline(cin,s); for(int i = 0; i < s.size(); i++)a[s[i]-'a']++; int t=0, tt=0; for(int i = 0; i < 40; i++) if(a[i]>tt){ t=i; tt=a[i]; } cout<<(char)('a'+t)<<" "<
    <<"\n"; return 0;}

转载于:https://www.cnblogs.com/gwj1314/p/9444912.html

你可能感兴趣的文章
PostgreSQL pg_hba.conf 文件简析
查看>>
android o logcat read: unexpected EOF!
查看>>
[Scrum]2010/12/28 —— 第一天!
查看>>
ASP.NET MVC模式 温习(一)排除MVC模式误区
查看>>
Mysql的read_only 只读属性说明 (运维笔记)
查看>>
DOCKER 从入门到放弃(五)
查看>>
Python 多线程学习
查看>>
appcan官方ajax
查看>>
获取NVIDIA显卡的温度
查看>>
Dijkstra算法
查看>>
Deep Learning 9: Performance
查看>>
面试题61 把二叉树打印成多行
查看>>
C#例子 易懂故事 接口 委托 事件 异步通知 好玩.
查看>>
[转]Windows Shell 编程 第十一章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987992】...
查看>>
修改presto新版源码让他支持redash数据库
查看>>
Javascript的书写位置
查看>>
树-线索二叉树
查看>>
JAVA遇见HTML——Servlet篇:Servlet基础
查看>>
第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除...
查看>>
Java单例模式
查看>>