洛谷P2073 送花

2022-04-30 07:33:11 字數 1450 閱讀 1250

小明準備給小紅送一束花,以表達他對小紅的愛意。他在花店看中了一些花,準備用它們包成花束。

這些花都很漂亮,每朵花有乙個美麗值w,**為c。

小明一開始有乙個空的花束,他不斷地向裡面新增花。他有以下幾種操作:

操作 含義

1 w c 新增一朵美麗值為w,**為c的花。

3 小明覺得當前花束中最便宜的一朵花太廉價,不適合送給小紅,所以刪除最便宜的一朵花。

2 小明覺得當前花束中最貴的一朵花太貴,他心疼自己的錢,所以刪除最貴的一朵花。

-1 完成新增與刪除,開始包裝花束

若刪除操作時沒有花,則跳過刪除操作。

如果加入的花朵**已經與花束中已有花朵**重複,則這一朵花不能加入花束。

請你幫小明寫乙個程式,計算出開始包裝花束時,花束中所有花的美麗值的總和,以及小明需要為花束付出的總**。

輸入格式:

若干行,每行乙個操作,以-1結束。

輸出格式:

一行,兩個空格隔開的正整數表示開始包裝花束時,花束中所有花的美麗值的總和。以及小明需要為花束付出的總**。

輸入樣例#1:

1 1 1

1 2 5

21 3 3

31 5 2

-1輸出樣例#1:

8 5對於20%資料,運算元<=100,1<=w,c<=1000。

對於全部資料,運算元<=100000,1<=w,c<=1000000。

現在碰到平衡樹的題目一般都是vector或者是set水過去,

比如這道題....

題目要求不能重複,set啊,什麼都不用判斷,直接插入,方便

只是要注意的set的end函式和vector一樣是開區間,而set的迭代器又只支援

\(--\)和\(++\)操作,所以在刪除最大值的時候記得將迭代器\(--\)

#include#define lol long long

#define il inline

#define rg register

#define min(a,b) (a)<(b)?(a):(b)

#define max(a,b) (a)>(b)?(a):(b)

using namespace std;

const int n=1e5+10;

void in(lol &ans)

while(i>='0' && i<='9') ans=(ans<<1)+(ans<<3)+i-'0', i=getchar();

ans*=f;

}struct node ;

v.insert(tmp);

}else if(op==2)

else if(op==3)

else

}return 0;

}

洛谷P2073 送花

小明準備給小紅送一束花,以表達他對小紅的愛意。他在花店看中了一些花,準備用它們包成花束。這些花都很漂亮,每朵花有乙個美麗值w,為c。小明一開始有乙個空的花束,他不斷地向裡面新增花。他有以下幾種操作 操作 含義 1 w c 新增一朵美麗值為w,為c的花。3 小明覺得當前花束中最便宜的一朵花太廉價,不適...

洛谷 P2073 送花

小明準備給小紅送一束花,以表達他對小紅的愛意。他在花店看中了一些花,準備用它們包成花束。這些花都很漂亮,每朵花有乙個美麗值w,為c。小明一開始有乙個空的花束,他不斷地向裡面新增花。他有以下幾種操作 操作 含義 1 w c 新增一朵美麗值為w,為c的花。3 小明覺得當前花束中最便宜的一朵花太廉價,不適...

洛谷P2073 送花 Treap

小明準備給小紅送一束花,以表達他對小紅的愛意。他在花店看中了一些花,準備用它們包成花束。這些花都很漂亮,每朵花有乙個美麗值w,為c。小明一開始有乙個空的花束,他不斷地向裡面新增花。他有以下幾種操作 操作 含義 1 w c 新增一朵美麗值為w,為c的花。3 小明覺得當前花束中最便宜的一朵花太廉價,不適...