小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。現在皮皮找到了一次遊戲的結果,但他不知道這個結果是不是合法的。請你告訴他這個結果有沒有可能成為乙個合法的遊戲結果...