2020洛谷初赛模拟 订正


2020洛谷初赛模拟

78分,有点不是很理想。和去年的成绩相差无几,但是貌似和去年难度相当啊。今年的初赛只选拔200人而不像去年那样水,我有点点危险……

以下是订正

1、运行次数判断

10.在一个初始长度为n的链表中连续进行k次操作,每次操作是读入两个数字aj和bj,在链表中找到元素为aj的结点(假设一定可以找到),然后将bj这个元素插入到这个结点前面。在最理想的情况下,链表访问的结点数量最少可能是多少(不算将要插入的结点)?
A.n次
B.k次
C.nk次
D.n+k 次

注意这里是“最理想的情况”,而不是“平均情况”。

如果问的是平均要多少次,那当然是O(nk)

但是这里是“最理想”,所以就可以任意构造这个初始链表。假设aj就是链表的第一个元素即可。

2、组合数

A班有5名风纪委员,B班有4名风纪委员,C班有3名风纪委员。现在需要这些同学中选取6名风纪委员巡逻,如果只关注各班派出的风纪委员人数,有几种不同的方案?
A.9
B.12
C.15
D.18

考场上遇到这种题,看到数据还算小的话还是手推一下吧!

这次我就直接pass了………………

其实很easy的

 1     501
 2     510
 3     411
 4     420
 5     402
 6     312
 7     321
 8     330
 9     303
10     240
11     231
12     222
13     213
14     141
15     132
16     123
17     042
18     033

over

3、图论基础

14.一个7个顶点的完全图需要至少删掉多少条边才能变为森林?
A.16
B.21
C.15
D.6

先下定义:

图:由点和边构成,可以连通也可以不连通

完全图:点两两之间都有直接的边的图,m=n*(n-1)/2

连通图:每两个点之间都是连通的(直接或者间接有路径可以到达)

树:最基础的连通图,m=n-1

森林:至少一棵树的图(一棵树也是森林!)

所以,就是从一个n=7->m=6*7/2=21的图变成了一个n=7->m=6的树,over

4、虽然这题没错但是我还是想记录一下

5.在一个长度为n的数组中找到第k大的数字,平均的算法时间复杂度最低的是:
A.O(n)
B.O(nk)
C.O(nlogn)
D.O(n^2)

其实每个选项都对应了一种做法,我们倒着讲:

假设原数组是a[1...n]

D:使用o(n^2)的排序,比如冒泡排序,然后输出a[k]即可

C:使用o(nlogn)的排序,比如sort(),然后同上

B:两层循环,依次找出1st,2nd,2rd,4th...(k-1)th,kth大的数即可

A:利用快排的思想,每次在目标的区间内选一个数i,然后把比a[i]小的都放在其左,比a[i]大的都放在其右。判断a[i]在这一次后的位置与k的大小关系,然后选择k所在的那个区间重复进行。时间复杂度:n+n/2+n/4+n/8+.......=2n=O(n)

可以直接用algorithm里面的函数nth_element(a.begin(),a.begin+k,a.end(),<cmp>)才不告诉你呢!

OVER


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM