家庭作業
老師在開學第一天就把所有作業都布置了,每個作業如果在規定的時間內交上來的話才有學分。每個作業的截止日期和學分可能是不同的。例如如果乙個作業學分為 10,要求在 6 天內交,那麼要想拿到這 10 學分,就必須在第 6 天結束前交。
每個作業的完成時間都是只有一天。例如,假設有 7 次作業的學分和完成時間如下:
作業號 期限 學分
1 1 6
2 1 7
3 3 2
4 3 1
5 2 4
6 2 5
7 6 1
最多可以獲得 15 學分,其中乙個完成作業的次序為 2,6,3,1,7,5,4,注意可能還有其他方法。
你的任務就是找到乙個完成作業的順序獲得最大學分。
input
第一行乙個整數 n,表示作業的數量;
接下來 n 行,每行包括兩個整數,第乙個整數表示作業的完成期限,第二個數表示該作業的學分。
output
輸出乙個整數表示可以獲得的最大學分。保證答案不超過 c/c++ 的 int 範圍。
example
樣例輸入
71 6
1 73 2
3 12 4
2 56 1
樣例輸出
15hint
對於 20% 的資料,n≤103;
對於 40% 的資料,n≤104;
對於 60% 的資料,n≤105;
對於 100% 的資料,n≤106,作業的完成期限均小於 7×105。
思路也不難,只要大家聽過雙關鍵字排序就ok了。
所謂雙關鍵字排序,就是類似乙個座標一樣,逐個比對,只不過可以用稍稍更改了一點點的sort排序實現。
#include
using
namespace std;
struct test
;bool
compare
(test a1,test a2)
if(a1.day == a2.day)
}return
true;}
intmain()
; test a[
100005];
int n,result =0;
cin>>n;
for(
int i =
0;i)sort
(a,a+n,compare)
;for
(int i =
0;i)for
(int i =
0;icout<}
貪心 家庭作業
題目描述 老師在開學第一天就把所有作業都布置了,每個作業如果在規定的時間內交上來的話才有學分。每個作業的截止日期和學分可能是不同的。例如如果乙個作業學分為10,要求在6天內交,那麼要想拿到這10學分,就必須在第6天結束前交。每個作業的完成時間都是只有一天。例如,假設有7次作業的學分和完成時間如下 老...
家庭作業 Standard IO
description 老師在開學第一天就把所有作業都布置了,每個作業如果在規定的時間內交上來的話才有學分。每個作業的截止日期和學分可能是不同的。例如如果乙個作業學分為10,要求在6天內交,那麼要想拿到這10學分,就必須在第6天結束前交。每個作業的完成時間都是只有一天。例如,假設有7次作業的學分和完...
家庭作業彙總
家庭作業 2.65 寫出 實現如下函式 return 1 when x contains an even number of 1s 0 otherwise.assume w 32 int even ones unsigned x 函式應該遵循位級整數編碼規則,不過你可以假設資料型別int有w 32位...