2021年ECNU计科考研复试机试

2021年ECNU计科考研复试机试

C. 子序列

给定一个长度为 \( n \) 的非负整数序列 \( a_1,a_2,a_3,\cdots , a_n \),求出和不小于\(S \)的连续子序列\( a_l,a_{l+1},\cdots,a_r (1\leq l \leq r \leq n)\)的最短长度,即满足\( \sum_{i=l}^r a_i \geq S \)的最短连续子序列长度。

由于序列可能很长,以生成的方式给出序列:给出序列的首项\( a_1\)和一个乘数\( b\),序列其余各项的值为 \( a_i = (b \cdot a_{i-1} ) \mod (10^9 + 7) (1 < i \leq n)\) 。

输入格式

第一行两个整数 \( n,S (3\leq n \leq 5 \times 10^7, 1\leq S \leq 10^18) \),代表序列长度以及序列和的限制。

第二行给出两个整数\( a_1, b (0 \leq a,b < 10^9 + 7) \) ,含义如题目描述。

  • 对于\( 10\% \)的数据,\(1 \leq n \leq 500\)
  • 对于\( 30\% \)的数据,\(1 \leq n \leq 10^4\)
  • 对于\( 65\% \)的数据,\(1 \leq n \leq 2\times 10^6\)
  • 对于\( 100\% \)的数据,\(3\leq n \leq 5 \times 10^7\)

输出格式

一行一个整数,代表满足要求的连续子序列的最短长度。如果和不小于 \(S\) 的连续序列不存在,输出 \(-1\)。

测试样例

样例1

Input

3 6
1 2

Output

2

Hint:实际序列为 \( 1,2,4 \)

样例2

Input

5 1743745293
714636908 681692770

Output

3

Hint:实际序列为 714636908, 948615497, 288206443, 85239381, 340225887。

样例3

Input

3 8
1 2

Output

-1

Hint:实际序列为 \( 1,2,4 \)


25 thoughts on “2021年ECNU计科考研复试机试

    1. 只要选择适当的算法(大概10^9的数据量的话设计O(NlogN)的算法,10^5的数据量用O(N^2)算法)一般都可以。
      具体时间的话,第1题时限1秒512MB,第2题1秒256MB,第3题3秒2GB,第4题2秒512MB。

    1. 以往线下复试的时候都计入复试成绩的。可能是因为线上复试的监考难免有漏洞所以暂时不计入成绩。

  1. 请问M佬计科的学硕专硕复试流程都一样嘛?机试的题目也是一个难度的嘛?

    1. 机试是同一套题。复试流程文字上写着的是一样的,不过学硕专硕是分开进行的,老师可能会问的侧重点可能不一样(当然,本来复试的时候老师聊的内容就是因人而异,都不相同)

    1. 现在线上复试,是100%面试成绩,不过复试在总成绩中下调为了30$(初试成绩70%。之前是复试40%的)

      1. M大,请问软工的机试题还有别的吗,我看上面那个链接是E组,请问还有别组的题嘛

    1. 软工机试平台EOJ是支持Python的,如果机考时不做针对考试的设定也是可以用的,历年应该是都能用。

  2. 学长你好 可以麻烦看下“复试面试问题”这里吗 链接点击去是历年机试真题的某一道题…

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注