2023年8月8日提高組T1 作業

2021-08-05 21:25:39 字數 1069 閱讀 8367

小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。

這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi(你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的),每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其中的一項作業,請你告訴小a,他最多可以獲得多少價值。

input

第一行有乙個正整數n,表示作業的數量。

接下來n行,每行兩個正整數表示di和vi。

output

輸出一行,表示小a最多可以獲得的價值。

5 1 9

7 6

8 8

1 8

8 629

hint

考慮第三組資料,因為只有乙個專案所以只好每天都安排這個。

小a第一天完成第一項作業,第二天完成第二項作業,第三天完成第3項作業,第四天完成第5項作業。

對於前30%的資料,n<=100.

對於前60%的資料,n<=1000,di<=n

對於100%的資料,n<=100000,di,vi<=1000000000.

其實有至少兩個方法:(1)先按價值來排序,然後每個作業都放在最靠近截止日期的天來放就好

(2)用乙個大根堆來維護,每次取堆頂就好了

#include 

#include

#include

#include

#define n 100005

#define ll long long

using

namespace

std;

priority_queuevector

, less> p;

struct notea[n];

ll cmp(note a, note b)

int main()

sort(a+1,a+n+1,cmp);

ll ans = 0;

for (int i=1;i<=n;i++)

}printf("%lld\n", ans);

}

2023年8月8日提高組T1 作業

description 小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其...

2023年8月10日提高組T1 數學

description 小a得到了乙個數列a,他告訴你這個數列中所有的a i 都是1到n的自然數,並且告訴你對於一些a i 不能取哪些值。無聊的你想要知道所有可能的數列的積的和。定義乙個數列的積為這個數列所有數的乘機。由於答案太大,只要模10 9 7輸出即可。input 第一行三個整數n,m,k,分...

2023年8月17日提高組T1 遊戲

description 皮皮和敵敵在玩乙個遊戲 每輪選擇乙個正整數k,看誰先喊出k這個數字,誰就贏。一開始每個人都有乙個數字1,贏得那方的數字可以乘上k 2,而輸的那方的數字就只能乘上k。現在皮皮找到了一次遊戲的結果,但他不知道這個結果是不是合法的。請你告訴他這個結果有沒有可能成為乙個合法的遊戲結果...