網易2019秋季校園招聘程式設計題真題部分

2021-08-23 12:43:53 字數 3322 閱讀 2887

小易有乙個古老的遊戲機,上面有著經典的遊戲俄羅斯方塊。因為它比較古老,所以規則和一般的俄羅斯方塊不同。 熒幕上一共有 n 列,每次都會有乙個

1 x 1 的方塊隨機落下,在同一列中,後落下的方塊會疊在先前的方塊之上,當一整行方塊都被佔滿時,這一行會被消去,並得到1分。

有一天,小易又開了一局遊戲,當玩到第 m 個方塊落下時他覺得太無聊就關掉了,小易希望你告訴他這局遊戲他獲得的分數。

輸入描述:

第一行兩個數 n, m 第二行 m 個數,c1, c2, ... , cm , ci 表示第 i 個方塊落在第幾列 其中 1

<= n, m <= 1000, 1

<= ci <= n

示例:

輸入: 391

1222

3123

輸出: 2

分析:

要求獲得的分數,實際上是求各列中元素的最少個數(類似於短板效應)。可以用乙個字典去統計各列中的元素個數,然後求最小,但是注意邊界條件,即必須保證各列元素都有元素出現。

n, m = map(int, raw_input().split())

c = map(int, raw_input().split())

# 統計每列的方塊個數

d = {}

for i in c:

if i in d:

d[i] += 1

else:

d[i] = 1

if len(d)print

0else:

ans = float("inf")

for i in d.values():

ans = min(i, ans)

print ans

小易覺得高數課太無聊了,決定睡覺。不過他對課上的一些內容挺感興趣,所以希望你在老師講到有趣的部分的時候叫醒他一下。你知道了小易對一堂課每分鐘知識點的感興趣程度,並以分數量化,以及他在這堂課上每分鐘是否會睡著,你可以叫醒他一次,這會使得他在接下來的k分鐘內保持清醒。你需要選擇一種方案最大化小易這堂課聽到的知識點分值。

輸入描述:

第一行 n, k (1

<= n, k <= 105) ,表示這堂課持續多少分鐘,以及叫醒小易一次使他能夠保持清醒的時間。

第二行 n 個數,a1, a2, ... , an(1

<= ai <= 104) 表示小易對每分鐘知識點的感興趣評分。

第三行 n 個數,t1, t2, ... , tn 表示每分鐘小易是否清醒, 1表示清醒。

輸出描述:

小易這堂課聽到的知識點的最大興趣值。

輸入例子1:63

1352

5411

0100

輸出例子1:

16

# 通過**

n, k = map(int, raw_input().strip().split())

a = map(int, raw_input().strip().split())

b = map(int, raw_input().strip().split())

ans1 = 0

# 累加清醒狀態的得分,並把其歸0

for i in range(n):

if b[i] == 1:

ans1 += a[i]

a[i] = 0

ans2 = 0

# a[i]是對前i個節點的累加和,準確說是瞌睡狀態的累加,因為上步迴圈將清醒狀態歸為0

for i in range(1, n):

a[i] += a[i-1]

# 找到前k個節點中的瞌睡狀態的最大值並儲存在ans2中

for i in range(k):

ans2 = max(ans2, a[i])

# 找到k個節點後的任意k個節點的瞌睡狀態的最大值

for i in range(k, n):

ans2 = max(ans2, a[i]-a[i-k])

print ans1+ans2

又到了豐收的季節,恰逢小易去牛牛的果園裡遊玩。

牛牛常說他對整個果園的每個地方都瞭如指掌,小易不太相信,所以他想考考牛牛。

在果園裡有n堆蘋果,每堆蘋果的數量為ai,小易希望知道從左往右數第x個蘋果是屬於哪一堆的。

牛牛覺得這個問題太簡單,所以希望你來替他回答。

輸入描述:

第一行乙個數n(1 <= n <= 105)。

第二行n個數ai(1 <= ai <= 1000),表示從左往右數第i堆有多少蘋果

第三行乙個數m(1 <= m <= 105),表示有m次詢問。

第四行m個數qi,表示小易希望知道第qi個蘋果屬於哪一堆。

輸出描述:

m行,第i行輸出第qi個蘋果屬於哪一堆。

輸入例子1:52

7349

312511

輸出例子1:15

3

分析:

這題比較簡單。首先儲存每個堆及之前堆的總數,然後進行查詢(因為是總數列表是遞增的,所以可以使用二分法,btw,用普通查詢爆出時間複雜度超時)

n = int(raw_input())

a = map(int, raw_input().split())

m = int(raw_input())

q = map(int, raw_input().split())

total = [0]*n

tsum = 0

for i in range(n):

tsum += a[i]

total[i] = tsum

def bisearch(seq, k):

mid = len(seq)//2

if seq[mid] == k:

return mid

left, right = 0, len(seq)-1

while left <= right:

mid = (right-left)//2 + left

if seq[mid]

1 elif seq[mid]>=k:

right = mid-1

else:

return mid

return left

for i in range(m):

print bisearch(total, q[i])+1

# 因為堆從1開始

網易2018校園招聘程式設計題真題 程式設計題 相反數

時間限制 1秒 空間限制 32768k 為了得到乙個數的 相反數 我們將這個數的數字順序顛倒,然後再加上原先的數得到 相反數 例如,為了得到1325的 相反數 首先我們將該數的數字順序顛倒,我們得到5231,之後再加上原先的數,我們得到5231 1325 6556.如果顛倒之後的數字有字首零,字首零...

網易2019秋季招聘 俄羅斯方塊

熒幕上一共有 n 列,每次都會有乙個 1 x 1 的方塊隨機落下,在同一列中,後落下的方塊會疊在先前的方塊之上,當一整行方塊都被佔滿時,這一行會被消去,並得到1分。有一天,小易又開了一局遊戲,當玩到第 m 個方塊落下時他覺得太無聊就關掉了,小易希望你告訴他這局遊戲他獲得的分數。輸入描述 第一行兩個數...

網易2018校園招聘程式設計題真題集合 (部分)

第一題 小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩台魔法機器可以通過投入x x可以為0 個魔法幣產生更多的魔法幣。魔法機器1 如果投入x個魔法幣,魔法機器會將其變為2x 1個魔法幣 魔法機器2 如果投入x個魔法幣,魔法機器會將其變為2x 2...