家庭作業 題解 C

2021-10-04 22:20:19 字數 1283 閱讀 9236

家庭作業

老師在開學第一天就把所有作業都布置了,每個作業如果在規定的時間內交上來的話才有學分。每個作業的截止日期和學分可能是不同的。例如如果乙個作業學分為 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位...