小易有乙個古老的遊戲機,上面有著經典的遊戲俄羅斯方塊。因為它比較古老,所以規則和一般的俄羅斯方塊不同。 熒幕上一共有 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...