網易2019實習生招聘程式設計題 牛牛找工作

2021-08-17 18:52:38 字數 1221 閱讀 8055

為了找到自己滿意的工作,牛牛收集了每種工作的難度和報酬。牛牛選工作的標準是在難度不超過自身能力值的情況下,牛牛選擇報酬最高的工作。在牛牛選定了自己的工作後,牛牛的小夥伴們來找牛牛幫忙選工作,牛牛依然使用自己的標準來幫助小夥伴們。牛牛的小夥伴太多了,於是他只好把這個任務交給了你。

輸入描述:

每個輸入包含乙個測試用例。

每個測試用例的第一行包含兩個正整數,分別表示工作的數量n(n<=100000)和小夥伴的數量m(m<=100000)。

接下來的n行每行包含兩個正整數,分別表示該項工作的難度di(di<=1000000000)和報酬pi(pi<=1000000000)。

接下來的一行包含m個正整數,分別表示m個小夥伴的能力值ai(ai<=1000000000)。

保證不存在兩項工作的報酬相同。

輸出描述:

對於每個小夥伴,在單獨的一行輸出乙個正整數表示他能得到的最高報酬。乙個工作可以被多個人選擇。

輸入例子1:

3 3 

1 100

10 1000

1000000000 1001

9 10 1000000000

輸出例子1:

100 

1000

1001

做這道題的時候,考慮到了將工作排序保證有序查詢,採用了先迴圈找出每個難度能拿到的最多報酬,然後二分查詢每個學生的難度的方法,以為二分可以保證複雜度,結果忽略了尋找每個難度能拿到最多報酬的迴圈複雜度,只能過40%。

後來想到把學生也按難度排序,然後每個學生能拿到的報酬大於等於上乙個學生能拿到的報酬,順序查詢安難度排序後的工作就可以,複雜度為o(n)

#include #include #include #include #include #include #include #define ll long long

using namespace std;

struct nodework[101100];

struct studenta[101000];

bool cmp1(student a,student b)

return a.k>n>>m;

for(int i=0;i=work[q].k)

max_s[a[i].id]=ans;

}for(int i=0;ireturn 0;

}

網易2019實習生招聘程式設計題集合

為了找到自己滿意的工作,牛牛收集了每種工作的難度和報酬。牛牛選工作的標準是在難度不超過自身能力值的情況下,牛牛選擇報酬最高的工作。在牛牛選定了自己的工作後,牛牛的小夥伴們來找牛牛幫忙選工作,牛牛依然使用自己的標準來幫助小夥伴們。牛牛的小夥伴太多了,於是他只好把這個任務交給了你。小q得到乙個神奇的數列...

網易2019實習生招聘程式設計題(牛牛的鬧鐘)

題目 牛牛總是睡過頭,所以他定了很多鬧鐘,只有在鬧鐘響的時候他才會醒過來並且決定起不起床。從他起床算起他需要x分鐘到達教室,上課時間為當天的a時b分,請問他最晚可以什麼時間起床 輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含乙個正整數,表示鬧鐘的數量n n 100 接下來的n行每行包含...

網易2019實習生招聘程式設計題(被3整除)

題目 小q得到乙個神奇的數列 1,12,123,12345678910,1234567891011 並且小q對於能否被3整除這個性質很感興趣。小q現在希望你能幫他計算一下從數列的第l個到第r個 包含端點 有多少個數可以被3整除。輸入描述 輸入包括兩個整數l和r 1 l r 1e9 表示要求解的區間兩...