三道选择题
1.cos(nx)可以写作若干ancos(x)^n相加的形式,求cos(2048x)的a0
取x = pi/2 于是cos(x) = 0
于是有 a0 = cos(2048pi/2) =cos(512*2pi)=1
2.平衡二叉树 依次加入3, 8, 9后的状态
3. 一个分页系统,不会
关于FIFO(页面淘汰算法)和LRU(最近最少使用算法)
二、一道多选题
求矩阵特征值
-1 1 0
-4 3 0
1 0 2
答案是1与2
三、一道填空题,有两个玻璃球,在一栋N层建筑中,找到最小的不会被摔破的楼层,所需要尝试的次数。
例如N=2时需要2
问N=8时需要多少次
四、四道算法题
-
N个边,N<10000 从中可以构成最多多少个三角形? 边不可以重复使用
没啥好的思路 -
每天固定生产M份吃的,每天额外生产一份所需额外成本是c1。可以把当天多余的保存下来,每份每天保存所需额外成本是c2。 但是最多保存t天,因为会过期。 现在给定d天的需求列表,给出最低额外成本。
思路:
用一个长度为t的列表rest记录前t天的剩余情况
遍历每天的需求,
A:如果当天需求小于M,则将当天剩余加入到rest中去,如果rest长度超过了t,则rest.pop(0)把t天前的那些库存丢掉。 (#注意,rest只是代表可以进行的储存,但是这些储存可能不会被用掉,所以这里是一个虚拟的概念,我们并不修改cost,直到我们真正用到库存时,才修改rest.)
B:如果当天需求大于M,则我们需要一些补充,有两种方案,利用库存或者是当天额外生产,我们需要比较这两种方式的成本。 前i天的库存的单位成本是ic2 当ic2 < c1时我们用库存,否则当天额外生产。 因此我们遍历rest[-1] rest[-2] … 如果还不能满足要求,我们额外生产所需。在此过程中更新cost。
m=5
c1=3
c2=1
t=2
needs=[1,1,2,4,10]
rest = []
cost = 0
for a in needs:
if a <= m:
rest.append(m-a)
if len(rest) > t:
rest.pop(0)
else:
cha = a - m
s = 0
while cha > 0 and s < len(rest):
index = len(rest)-1-s
if c2*(s+1) >= c1:
break
val = min(rest[index