SHAD中的考试算法

你好!我的名字叫Alexander Kurilkin,我正在ShAD Helper教授算法课程。在这篇文章中,我将分析过去几年的入学考试中的一些任务,以便您可以看到等待的内容,并了解我们在课程中可以教给您什么。希望您与我分享对算法有趣任务的热爱,并通过阅读本文获得真诚的荣幸!所以,让我们开始吧...



2016/05/28,第4期


给出 n[ai;bi]我们称分段嵌套索引[ai;bi]包含它的细分的数量。建议一种算法,该算法确定集合中是否存在嵌套索引超过1000的段。时间限制为O(nlogn),以增加内存- O(n)


决断

, "". , - , , - , . " ", ai, " ", bi. . , 1. , 1000, , — 1000 . — - , , . , (std::multiset C++), . , — 1000 . , , , , *set.begin(), ( 1000 ) . , ! , , . , . , , !


: 1000 ? , - 1000 , 1000 , - , ? , - 1000 , , , , , .


, . O(nlogn), O(nlog1000)=O(n)O(n) . , : O(nlogn). O(n).


2019/05/25,第4号


给出了一个实数数组 A建议为每个元素查找的算法A最靠近右边的元素的索引,至少是其大小的两倍。如果没有这样的元素,则应返回该值。None时限O(nlogn),以增加内存- O(n)


决断

(,). ( None), (A[n1],n1), . i. , , , ? , . , , , ? . , . , (A[i],i). , , ? , ( ) i. (, , std::vector) , A[i]2. , ( ), , None.


, , ? , O(n), n, O(nlogn), . , , , O(n).


06/10/12,第5号
在该组n 每个人可能认识也可能不认识对方(如果 A知道 B,它并不遵循 B知道 A所有相识均由布尔矩阵给出n×n. — , , . , , . — O(n), — O(1).


Kij=1, i- j- , 0 .


, Kij=1 (ij), i- , - , j- , Kij=0, j- , i- .


: — . , 1, , l. , ( 0), , , , , - ( , , l). l- — , (l,l+1). 1, , , . , . , , , ( ), , , , . , , , O(n), , O(n). : O(n). , , (, ), O(1). !


, , !


2019, -, D


, 2
: 2
: 256Mb


nm. q« i1». .


— , . , .


. , , .



nm— (1n,m105,2n). mu, v, w. , w, uv(1u,vn,1w10).


q— (1q105). qid(1idm). , id. .



q用空格或换行符分隔的数字-每个请求后最小生成树的权重。


决断

, , 99% . .


" uv", k. uvk( . k+1, , uv>k+1, k+1, , ́ ), , 1. . , , . O(n), , , O(logn)link-cut tree, , ( ). .


1 10, 10 ( , ). k- k. . : , ( ) , , . , , , , .


(u,v)1 k. k- . , k- uv. , k+1, , . , uvk- , 1. uvk- , k, .


, , ? O(α(n)), O(10mlogn)=O(mlogn). , Accepted :)


All Articles