• 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

  • 相关阅读:
    node体验
    JS练习--prototype的一道题目
    JS的OOP--继承之prototype
    JS的OOP--new一个function背后的实际操作
    JS中new运算符的运算顺序
    thymeleaf 拼接字符串与变量
    spring jpa exists
    LocalDateTime json格式化
    格式化java8 LocalDateTime
    springboot定时任务
  • 原文地址:https://www.cnblogs.com/send-off-a-friend/p/13782697.html
Copyright © 2020-2023  润新知