小q的公司最近接到m個任務, 第i個任務需要xi的時間去完成, 難度等級為yi。
小q擁有n臺機器, 每台機器最長工作時間zi, 機器等級wi。
對於乙個任務,它只能交由一台機器來完成, 如果安排給它的機器的最長工作時間小於任務需要的時間, 則不能完成,如果完成這個任務將獲得200 * xi + 3 * yi收益。
對於一台機器,它一天只能完成乙個任務, 如果它的機器等級小於安排給它的任務難度等級, 則不能完成。
小q想在今天盡可能的去完成任務, 即完成的任務數量最大。如果有多種安排方案,小q還想找到收益最大的那個方案。小q需要你來幫助他計算一下。
輸入描述:
輸入包括n + m + 1行,輸入的第一行為兩個正整數n和m(1 <= n, m <= 100000), 表示機器的數量和任務的數量。
接下來n行,每行兩個整數zi和wi(0 < zi < 1000, 0 <= wi <= 100), 表示每台機器的最大工作時間和機器等級。
接下來的m行,每行兩個整數xi和yi(0 < xi < 1000, 0 <= yi<= 100), 表示每個任務需要的完成時間和任務的難度等級。
輸出描述:
輸出兩個整數, 分別表示最大能完成的任務數量和獲取的收益。示例1
1 2100 3
100 2
100 1
1 20006
解題**:
#-*- coding:utf-8 -*-
#python2.7
n,m=[int(i) for i in
raw_input().strip().split()]
machines,tasks=,
for i in
range(n):
hours,level=[int(i) for i in
raw_input().strip().split()]
for i in
range(m):
hours,level=[int(i) for i in
raw_input().strip().split()]
machines.sort(key=lambda x: (x[0],x[1]),reverse=true)
tasks.sort(key=lambda x: (x[0],x[1]),reverse=true)
dp=[0 for i in range(101)]
j=0count=0
res=0
for tktime,tklev in
tasks:
while jand machines[j][0]>=tktime:
dp[machines[j][1]]+=1j+=1
for i in range(tklev,101):
if dp[i]>0:
dp[i]-=1res += 200*tktime+3*tklev
count+=1
break
print("
%d %d
" %(count,res))
牛客網刷題day15
2.各個路由協議衡量路由的好壞標準是 c a.路由 b.路由器優先順序 c.路由權 d.包 率 解析 路由權 用於選擇最佳路由的資訊。路由演算法修改路由表的基本目的是將最好路由資訊新增到路由表中,路由的好壞是由路由演算法根據自己獲得的路由資訊計算出來的。對於每一條路由,路由演算法產生一種權值來表示路...
演算法題 17 紙牌遊戲 牛客網 騰訊筆試題
牛牛和羊羊正在玩乙個紙牌遊戲。這個遊戲一共有n張紙牌,第i張紙牌上寫著數字ai。牛牛和羊羊輪流抽牌,牛牛先抽,每次抽牌他們可以從紙牌堆中任意選擇一張抽出,直到紙牌被抽完。他們的得分等於他們抽到的紙牌數字總和。現在假設牛牛和羊羊都採用最優策略,請你計算出遊戲結束後牛牛得分減去羊羊得分等於多少。輸入描述...
演算法題16 貪吃的小Q 牛客網 騰訊筆試題
題目 輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個正整數,表示父母出差的天數n n 50000 和巧克力的數量m n m 100000 輸出描述 輸出乙個數表示小q第一天最多能吃多少塊巧克力。示例1 3 7 4 解題思路 二分查詢,此題為二分查詢的變形。解題 coding utf...