為了找到自己滿意的工作,牛牛收集了每種工作的難度和報酬。牛牛選工作的標準是在難度不超過自身能力值的情況下,牛牛選擇報酬最高的工作。在牛牛選定了自己的工作後,牛牛的小夥伴們來找牛牛幫忙選工作,牛牛依然使用自己的標準來幫助小夥伴們。牛牛的小夥伴太多了,於是他只好把這個任務交給了你。
輸入描述:
每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個正整數,分別表示工作的數量n(n<=100000)和小夥伴的數量m(m<=100000)。
接下來的n行每行包含兩個正整數,分別表示該項工作的難度di(di<=1000000000)和報酬pi(pi<=1000000000)。
接下來的一行包含m個正整數,分別表示m個小夥伴的能力值ai(ai<=1000000000)。
保證不存在兩項工作的報酬相同。
輸出描述:
對於每個小夥伴,在單獨的一行輸出乙個正整數表示他能得到的最高報酬。乙個工作可以被多個人選擇。
輸入例子1:
3 31 100
10 1000
1000000000 1001
9 10 1000000000
輸出例子1:
1001000
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 表示要求解的區間兩...