C++ sort排序的总和应用题

news2025/1/16 20:19:05
第1题     sort排序1      时限:1s 空间:256m

输入n个数,将这n个数从小到大排序,输出。

输入格式

1行,一个正整数nn<=100

2行,n个正整数,小于100

输出格式

n个整数,空格隔开

输入/输出例子1

输入:

5

1 5 2 8 3

输出:

1 2 3 5 8

#include<bits/stdc++.h>
using namespace std;
long long n,a[200];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
    return 0;
}
第2题     sort排序2      时限:1s 空间:256m

输入n个数,将这n个数从大到小排序,输出。

输入格式

1行,一个正整数nn<=100

2行,n个正整数,小于100

输出格式

n个整数,空格隔开

输入/输出例子1

输入:

5

1 5 2 8 3

输出:

8 5 3 2 1

#include<bits/stdc++.h>
using namespace std;
long long n,a[200];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=n;i>=1;i--)
        cout<<a[i]<<" ";
    return 0;
}
第3题     兔子      时限:5s 空间:256m

从左往右有100000001个整数点,分别是整数点0至整数点100000000。

n只兔子,第i只兔子在整数点d[i]。你需要选择一个整数点作为喂食点,所有兔子都要走到这个整数点进食。

应该如何选择喂食点,才能使得所有兔子走过的总路程最小?

输出最小的总路程。

输入格式

第一行,一个整数。1<=n<=20。

第二行,共n个整数,第i个整数是d[i]。0<=d[i]<=100000000。

【提示】

对于60%的数据, 1<=n<=3且0<=d[i]<=10。

对于80%的数据, 1<=n<=10且0<=d[i]<=100。

输出格式

一个整数

输入/输出例子1

输入:

3

5  9  1

输出:

8

#include<bits/stdc++.h>
using namespace std;
long long n,a[50],x,s;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1);
    if(n%2==1)x=a[n/2+1];
    else x=(a[n/2]+a[n/2+1])/2;
    for(int i=1;i<=n;i++)
    s=s+abs(a[i]-x);
    cout<<s;
    return 0;
}
第4题     糖果      时限:1s 空间:256m

n个小朋友,有m袋糖果,第i袋的糖果数量是a[i]。已知n<=m<2n。

每个小朋友至少要有一袋糖果,至多只能要两袋糖果。

分配的目标是把这m袋糖果全部分完,而且要使得每个小朋友最终得到的糖果数量都是相等的。

如果可以做到则输出”possible”,如果做不到则输出”impossible”。

注意:不能拆开一个袋子的糖果,必须整袋整袋的分配。

输入格式

第一行,一个正整数R,表示有R组测试数据。1<=R<=10。

每组测试数据的格式是:

第一行,两个整数n和m。1<=n<=50。n<=m<2n。

第二行,m个整数,第i个整数是a[i]。1<=a[i]<=1000。

输出格式

R行,每行一个字符串,”possible”或者”impossible”,双引号不用输出。

输入/输出例子1

输入:

3

1 1

47

3 5

10 8 10 1 1

3 5

3 9 10 7 1

输出:

possible

impossible

possible

#include<bits/stdc++.h>
using namespace std;
long long n,c,d;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int b=1,q=1,s=0,a[200]={0};
        cin>>c>>d;
        for(int i=1;i<=d;i++)
        {
            cin>>a[i];
            s=s+a[i];
        }
        if(s%c!=0)
        {
            cout<<"impossible"<<endl;
            continue;
        }
        else 
        {
            sort(a+1,a+d+1);
            for(int j=d;j>=b;j--)
            {
                if(a[j]==s/c)continue;
                if(a[j]+a[b]==s/c)
                {
                    b++;
                    continue;
                }
                if(a[j]>s/c)
                {
                    q=-1;
                    break;
                }
                q=-1;
                break;
            }
            if(q==-1)
        	{
            	cout<<"impossible"<<endl;
            	continue;
        	}
        	else cout<<"possible"<<endl;
        }
    }
    return 0;
}
第5题     中间数(med)     时限:1s 空间:256m

在统计学的世界中,中间数(median)扮演一个重要的角色。 根据定义:中间数就是在一连串已由小到大排序的数字中,排在中间的那一个数。例如:在{1,3,4,9,11}4就是中间数。若有偶数个数字,我们定义中间数就是位于中间的那2个数的和除以2(而且只取整数部分)。例如:在{1,2,3,6,7,8}{3,6}是位于中间的2个数,所以中间数就是(3+6)/2=4

输入格式

第一行一个数为整数NN<=30000),表示有N个整数。
从第二行开始,有N个整数,有一空格隔开。

输出格式

仅一行,输出这些数的中间数。

输入/输出例子1

输入:

6

1 3 4 2 3 27

输出:

3

#include<bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    	cin>>a[i];
    sort(a+1,a+n+1);
    if(n%2==1)cout<<a[n/2+1];
    else cout<<(a[n/2+1]+a[n/2])/2;
    return 0;
}
第6题     合唱队形      时限:1s 空间:256m

茵茵所在的合唱队共有 个人(n为奇数)。为了准备一次演出,老师开始为她们安排合唱队形了。
大家都知道,合唱队形通常是中间高两端低的。老师是这样安排他们的队形的:先让所有的同学按高个儿在前的顺序排成一队。然后,最高的那位同学单独站出来,这是合唱队形的中心,再让第二位同学站在她的左手边,让第三位同学站在她的右手边,再依次向两端安排其他人……
事先给定所有人的身高,请输出她们站成合唱队形之后的身高顺序。

输入格式

文件第一行是一个整数n,表示合唱队的总人数,已知n为奇数,且n<50 
文件第二行是n个整数,表示以厘米为单位的所有人的身高。

输出格式

文件中只有n个整数,表示她们按老师的要求站成合唱队形之后的身高顺序。

输入/输出例子1

输入:

7
154 160 157 162 159 152 163

输出:

152 157 160 163 162 159 154

#include<bits/stdc++.h>
using namespace std;
long long n,a[100],b[100],s=1;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1);
    b[n/2+1]=a[n];
    for(int i=1;i<=n/2;i++)
    {
    	b[i]=a[s],b[n-i+1]=a[1+s],s+=2;
	}
	for(int i=1;i<=n;i++)
	cout<<b[i]<<" ";
    return 0;
}
第7题     求值(simple)     时限:1s 空间:256m

给出N个整数X1X2X3XN,将这N个数从小到大排序为:A1A2A3AN,记数列A1A2A3AN的奇数项之和为P,偶数项之和为Q,令T=|P-Q|求出T的值。(T=|P-Q|表示T等于P-Q的绝对值。)

图片.png

输入格式

输入文件的第一行为整数N1<=N<=50000
接下来的N行每行有一个整数,按顺序给出X1X2X3XN的值(|Xi|<=1000

输出格式

输出整数T的值。

输入/输出例子1

输入:

3

1

3

2

输出:

2

#include<bits/stdc++.h>
using namespace std;
long long n,s1,s2,a[50005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
    {
        if(i%2==1)s1=s1+a[i];
        else s2=s2+a[i];
    }
    cout<<abs(s1-s2);
    return 0;
}
第8题     学生代表(perfect)      时限:1s 空间:256m

根据上级文件的通知,晨晨学校要挑选一个学生代表,参加区学生代表大会。学校领导想根据学生们平时的表现,找到一个各方面表现都比较平均的学生参加。
刚好,学生根据平时的表现都有自己的德育操行分r (1<=r<=1000),为了尽快找到这名代表,学校领导把学生排成n×n (2<=n<=99, n为奇数)队列,他叫每一行的同学找出自己行的德育操行分在中间位置的同学(所谓中间位置也就是行里面有一半的同学的操行分大于或等于这个学生的操行分数,并且同时有一半的学生的操行分小于或等于这个学生的操行分数)。然后,在每一行中间位置的这些学生中再次找出处于中间位置的那个学生。那么这个学生就是最后参加学生代表大会的学生了。
给出n×n的学生队列,找到其中的学生代表的操行分数。

输入格式

第一行:一个整数n
2..n+1行:每一行有n个整数,分别代表这一行里面每个学生的操行分。

输出格式

一个整数,学生代表的操行分数。

输入/输出例子1

输入:

5
1 5 3 9 5
2 5 3 8 1
6 3 5 9 2
8 8 3 3 2
5 4 4 4 4

输出:

4

样例解释

样例说明:第一行中间位置的为5,第二行为3、第三行为5、第四行为3、第五行为4
然后在5 3 5 3 4中找到中间位置为4

#include<bits/stdc++.h>
using namespace std;
long long n,a[200],b[200];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            cin>>a[j];
        sort(a+1,a+n+1);
        b[i]=a[n/2+1];
        for(int j=1;j<=n;j++)
            a[j]=0;
    }
    sort(b+1,b+n+1);
    cout<<b[n/2+1];
    return 0;
}
第9题     课程(course)      时限:1s 空间:256m

N个整数,你要求出这N个数当中前K小的总和。

输入格式

第一行,一个整数G,表示有G组测试数据。1 <= G <= 5
每组测试数据格式如下:
第一行,NK。 1 <= N <= 1000。 1 <= K <= N
第二行,N个整数,每个整数范围【1,1000】。

输出格式

G行。每行一个整数。

输入/输出例子1

输入:

3
4 2
1 5 3 4
3 3
1 5 4
5 1
2 2 4 5 3

输出:

4
10
2

#include<bits/stdc++.h>
using namespace std;
long long m,n,w,a[2000];
int main(){
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        int s=0;
        cin>>n>>w;
        for(int j=1;j<=n;j++)
            cin>>a[j];
        sort(a+1,a+n+1);
        for(int j=1;j<=w;j++)
            s=s+a[j];
        cout<<s<<endl;
        for(int j=1;j<=n;j++)
            a[j]=0;
    }
    return 0;
}
第10题     小头速算     时限:1s 空间:256m

小头是个聪明的孩子,但同时他也很馋嘴。这天,他又在对着一堆糖果发呆了。妈妈看见了很生气,于是她对小头说:"这里一共有n个糖果,每个糖果有一个价值c,如果你能算出这堆糖果中价值最大的糖果,加上价值第3大的糖果,加上价值第5大的糖果,……一直加到价值第n大的糖果,他们的价值和是多少,那么妈妈就把这堆糖果奖励给你。另外妈妈保证n是奇数且所有糖果的价值都不相等。"

原本这个问题对于小头来说只是小菜一碟,但是在美味的糖果面前,小头的智商瞬间降为负值,连1+1都变成了绝世难题。于是好心的你决定发挥雷锋精神,帮助小头算出答案。

输入格式

第一行一个正整数n,表示有n个糖果(n≤1000)

接下来n行,每行一个正整数,表示糖果的价值

输出格式

一个正整数,表示要求的价值和


 

输入/输出例子1

输入:

5

4

9

3

1

6

输出:

14

#include<bits/stdc++.h>
using namespace std;
long long n,a[1005],s;
int m(int z,int x)
{
    return z>x;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1,m);
    for(int i=1;i<=n;i++)
        if(i%2==1)s=s+a[i];
    cout<<s;
    return 0;
}
第11题     成绩排序     时限:1s 空间:256m

输入n个同学的语文、数学、和英语成绩,计算他们的总分,要求按从高到低的顺序输出总分。

输入格式

第一行:输入1个正整数n(3≤n≤1000),表示学生总数;

第2到n+1行,每行输入3个正整数,表示每个同学语文、数学、英语的分数。

输出格式

只有一行:按从高到低的顺序输出成绩。

输入/输出例子1

输入:

10

100 100 98

100 100 100

100 96 95

85 96 45

100 85 96

100 98 96

96 75 89

79 65 86

96 89 79

100 100 85

输出:

300 298 294 291 285 281 264 260 230 226

#include<bits/stdc++.h>
using namespace std;
long long s[2000],n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        s[i]=a+b+c;
    }
    sort(s+1,s+n+1);
    for(int i=n;i>=1;i--)
        cout<<s[i]<<" ";
    return 0;
}
第12题     研究数列     时限:1s 空间:256m

摇摇最爱研究和发明东西了,这不,它又研究起来数列了。

输入格式

共2行,第一行输入1个整数N(1<=n<=5000),第二行输入N个整数。

输出格式

输出这堆整数的从小到大排,从大到小排,倒序输出,还有求出这堆整数中的最大数,最小数。


 

输入/输出例子1

输入:

5

    2 6 9 3 5

输出:

    2 3 5 6 9

    9 6 5 3 2

    5 3 9 6 2

    9

    2

#include<bits/stdc++.h>
using namespace std;
long long n,a[5005],b[5005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=a[i];
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    for(int i=n;i>=1;i--)
        cout<<a[i]<<" ";
    cout<<endl;
    for(int i=n;i>=1;i--)
        cout<<b[i]<<" ";
    cout<<endl;
    cout<<a[n]<<endl<<a[1];
    return 0;
}
第13题     分组     时限:1s 空间:256m

有n个球员,现在要把他们分成两队,让他们打比赛。每个人都有一个技巧值,有两个教练,教练A和教练B,这两个教练轮流挑选球员,这两个教练每次都是从当前剩下的球员中挑选技巧值最大的球员。第一次是教练A先挑选。当教练A和教练B挑完球员后,问:教练A挑选的球员的技巧总和比教练B挑选的球员的技巧总和大多少?

例如:有5个球员,技巧值分别是:{5,7,8,4,2},那么教练A先选8,教练B选7,教练A选5,教练B选4,教练A选2。最后教练A选到的总和是:15,教练B选到的总和是:11,所以你应该输出4。


 

输入格式

第一行:1个整数n(1≤n≤50);

第二行:n个非负整数,第i个整数表示第i个球员的技巧值,技巧值不超过10000。

输出格式

1个整数,教练A挑选的球员的技巧总和比教练B挑选的球员的技巧总和大多少。


 

输入/输出例子1

输入:

4

9 8 7 6

输出:

2

第14题     一半     时限:1s 空间:256m

n个数,保存在数组a[1...n],每次挑选数组当中的最大的一个数(如果有多个数都是最大的,随便挑选其中的一个最大数),

把该数变成原来的一半(向下取整,例如最大的数是5,那么会变成2),经过m次这样的操作之后,把a数组所有的数从小到大输出。

输入格式

第一行,两个整数,nm1<=n<=100,  1<=m<=10^9

第二行,n个整数,第i个整数是a[i],  0<=a[i]<=10^9

输出格式

一行,n个整数,从小到大的次序输出,相邻两个数之间输出一个空格。

输入/输出例子1

输入:

6 4

1 2 3 21 5 4 

输出:

1 2 2 2 3 4 

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=m;i++)
    {
        if(a[n]==0)break;//一定要加这一步,否则会超时
        a[n]=a[n]/2;
        sort(a+1,a+n+1);
    }
    for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端 CSS 经典:弧形边框选项卡

1. 效果图 2. 开始 准备一个元素&#xff0c;将元素左上角&#xff0c;右上角设为圆角。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, i…

反射获取或修改对象属性的值

利用反射既可以获取也可以写入,首先咱们先写几个获取的例子。 一:利用反射修改各数据(利用resultField.set修改) 首先定义实体类 public class Dog {private String dogUser;private int age;把DogUser的"hahaha"改为"geggegegege" Dog dog = new Do…

全网最全面的由浅到深的Kotlin基础教程(七)

前言 本篇文章接着上一篇文章全网最全面的由浅到深的Kotlin基础教程&#xff08;六&#xff09;继续进阶学习kotlin&#xff0c;建议看完上一篇文章&#xff0c;再来看本篇文章。本篇主要分析一些常用的kotlin函数源码&#xff0c;以及用kotlin简单实现Rxjava的几个操作符。坚…

Advanced Installer 使用教程-自定义操作(中)

1、自定义操作的三种分类形式&#xff1a;控制台程序、控制台修改成的窗口程序、对话框程序 2、控制台程序 1&#xff09; 2&#xff09;传参 a、修改main函数 b、在命令行输入AI中的属性变量&#xff0c;注意执行时间的选择 c、如果需要输入多个命令行参数以空格隔开 d、如…

LLMPerf-为LLM提供可重现的性能指标

LLMPerf-为LLM推理提供可复现的性能指标 翻译自文章&#xff1a;Reproducible Performance Metrics for LLM inference 结合之前的LLMPerf测试大模型API性能的文章进行查看&#xff0c;效果更佳。 1. 摘要 我们见过许多关于LLM性能的声明&#xff1b;然而&#xff0c;这些声明往…

Qt_电脑wifi相关操作

项目描述: 在做项目时用到了获取wifi的操作。在网上查找了好久资料,这里做一些总结。 这里有显示当前电脑wifi连接状态,列出wifi列表,连接断开wifi等函数。欢迎大家留言添加文章内容。 使用范围: windows电脑(中文的环境) 使用技术:windows的cmd命令。和对字符串的解析…

MPLS VPN

不是公司的产品&#xff0c;是运营商对外提供的一种服务 没咋懂&#xff0c;oh my god

【Vue3】封装axios请求(cli和vite)

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 Vue 【Vue3】env环境变量的配置和使用&#xff08;区分cli和vite&#xff09; 文章目录 Vue前言一、常见用法二、vue3cli封装接口1..env配置2..dev(开…

51建模网AR虚拟试用,让网购不再只靠想象!

在数字化的浪潮中&#xff0c;网购已成为现代人生活的一部分。然而&#xff0c;传统的网购模式常常因为无法直接试穿、试用商品&#xff0c;导致买家在收到商品后感到失望&#xff0c;特别是面对大件家居产品时&#xff0c;仅凭屏幕上的图片和尺寸描述&#xff0c;很难准确地把…

民国漫画杂志《时代漫画》第17期.PDF

时代漫画17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

【蓝桥杯】

题目列表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using llunsigned long long; #define int ll const int N2e510; int k0; std::string s; int a,b,c,d; void solve() {char op;std::cin>>op;if(opA){std::string s;for(int i1;i&l…

BERT系列算法解读

1.bert训练的方法 为了训练BERT模型&#xff0c;主要采用了两种方法&#xff1a;掩码语言模型&#xff08;Masked Language Model, MLM&#xff09;和下一个句子预测&#xff08;Next Sentence Prediction, NSP&#xff09;。 方法一&#xff1a;掩码语言模型&#xff08;Mask…

Removing Smallest Multiples

题目描述: 给你一个集合 S &#xff0c;其中包含前 n 个正整数1, 2 。 您可以对 S 执行以下操作任意次数(可能为零)&#xff1a; #include<iostream> #include<cstring> #include<algorithm> #define int long long using namespace std; int t,n,sum; bo…

2024 中青杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024 长三角高校数学建模竞赛&#xff08;A题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过…

【真实项目中收获的提升】- 使用MybatisPlus框架 save一条字段中有主键id并且和以前重复会报错吗

问题描述&#xff1a; save一条数据中有主键id并且和以前重复会报错吗&#xff1f; 实际场景&#xff1a; 复制一条数据&#xff0c;修改其中一个字段&#xff0c;想让主键自增直接插入进数据库。 解决方案&#xff1a; 会报错&#xff0c; 直接把插入对象的主键id置为空…

java实现环形链表带哨兵

双向环形链表带哨兵&#xff0c;这时哨兵既作为头&#xff0c;也作为尾。 package com.tfq.arithmetic.linkedlist;import java.util.Iterator;/*** author: fqtang* date: 2024/05/22/8:40* description: 环形链表*/ public class DoublyLinkedListSentinel implements Iterab…

Delphi 程序例子(DPI变化自动感知及显示器相关功能演示)

目录 一、前言 二、Delphi 演示程序&#xff08;D12版本&#xff0c;用D11也都可以&#xff09; 1. 演示程序功能&#xff1a; 2. 程序界面&#xff1a; 3. 程序源代码下载&#xff08;有偿&#xff09;&#xff1a; 一、前言 系列文章&#xff1a; 彻底搞懂 Windows 显示…

数据结构---树,二叉树的简单概念介绍、堆和堆排序

树 树的概念和结构 结构 在我们将堆之前&#xff0c;我们先来了解一下我们的树。 我们的堆是属于树里面的一种&#xff0c; 树是一种非线性结构&#xff0c;是一种一对多的一种结构&#xff0c;也就是我们的一个节点可能有多个后继节点&#xff0c;当然也可以只有一个或者没…

23设计模式—工厂方法

文章目录 0、模式类型1、Factory Method1.1、动机1.2、实现 2、模式定义3、结构4、总结 0、模式类型 "对象创建"模式 通过“对象创建”模式绕开new&#xff0c;来避免对象创建&#xff08;new&#xff09;过程中导致的紧耦合&#xff08;依赖具体类&#xff09;&am…

多线程讲解(详解)

目录 什么是多线程&#xff1f; 为什么要使用多线程&#xff1f; 线程的创建 使用Thread实现 从以上代码我们梳理一下多线程创建步骤&#xff1a; 注意&#xff1a; 小示例 首先&#xff0c;引入依赖 然后&#xff0c;按照我们刚刚说的构建多线程的步骤进行构建&#…