其他分享
首页 > 其他分享> > 2021.12.11模拟总结

2021.12.11模拟总结

作者:互联网

今天进行了第二次模拟,总的来说表现还可以。最后九道题得分:560.

头一次用996,可以实时看到每道题得分,雀食不错。

 

排序的专题

3、众数(masses) 【问题描述】 由文件给出N个1到30000 间无序数正整数,其中 1≤N≤10000,同一个正整数可能会出现多次,出现次数最多的整数称为众数。求出它的众数及它出现的次数。 【输入格式】 输入文件第一行是正整数的个数 N,第二行开始为 N 个正整数。 【输出格式】 输出文件有若干行,每行两个数,第 1 个是众数,第 2 个是众数出现的次数。 【输入样例】 12 2 4 2 3 2 5 3 7 2 3 4 3 【输出样例】 2 4 3 4

第三题就要细说了,一开始写了半天的桶排,硬是没扣出来,WA了好几次,就先果断放弃。再往后做突然就来了灵感 (就很棒)纯属侥幸的切掉。

#include<iostream>
using namespace std;
const int N = 30005;
int n,a[N],maxv;
 
int main(){
    cin>>n;
    for (int i=1,x; i<=n; i++){
        cin>>x;
        a[x]++;
    }
    for (int i=1;i<=30000;i++)
        if (a[i]>maxv) maxv=a[i];
    for (int i=1;i<=30000;i++)
        if (a[i]==maxv) cout<<i<<"  "<<maxv<<endl;
    return 0;
}

 

4、第 k 小整数(knumber) 【问题描述】 现有 n 个正整数,n≤10000,要求出这 n 个正整数中的第 k 个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于 30000。 【输入格式】 第一行为 n 和 k,第二行开始为 n 个正整数的值,整数间用空格隔开。 【输出格式】 第 k 个最小整数的值;若无解,则输出“NO RESULT”。 【输入样例】 10 3 1 3 3 7 2 5 1 2 4 6 【输出样例】 3

第四题先把n个数进行sort排序,然后输出第k个排列好的数。

很简单对吧,但是我得了70,就因为没有仔细读题,没有考虑到无解的情况。

if(i>n)
        cout<<"NO RESULT";
    else
        cout<<a[i-1];

 

5、军事机密(secret) 【问题描述】 军方截获的信息由 n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。最原始的想法就是对这 n 个数进行从小到大排序,每个数都对应一个序号,然后对第 i 个是什么数感兴趣,现在要求编程完成。 【输入格式】 第一行 n,接着是 n 个截获的数字,接着一行是数字 k,接着是 k 行要输出数的序号。 【输出格式】 k 行序号对应的数字。 【输入样例】 5 121 1 126 123 7 3 2 4 3 【输出样例】 7 123 12

第五题是用时最长的。首先使用了快排,但每个数字所具有的序号没有处理好。最后数组还开小了

 

 总结:

问题所在:

对排序进行强化,不要全部依赖于快排,并不是万能的!

前面的题耗时太长,T7,8,9没时间做了。

 

——————————————————————————————————————————————————————————————————————————

 

 鄙人愣是把第三题代码交到第五题上,重复三次······

标签:11,输出,正整数,2021.12,int,maxv,样例,众数,模拟
来源: https://www.cnblogs.com/su-yichen/p/15676653.html