小明準備給小紅送一束花,以表達他對小紅的愛意。他在花店看中了一些花,準備用它們包成花束。
這些花都很漂亮,每朵花有乙個美麗值w,**為c。
小明一開始有乙個空的花束,他不斷地向裡面新增花。他有以下幾種操作:
操作 含義
1 w c 新增一朵美麗值為w,**為c的花。
3 小明覺得當前花束中最便宜的一朵花太廉價,不適合送給小紅,所以刪除最便宜的一朵花。
2 小明覺得當前花束中最貴的一朵花太貴,他心疼自己的錢,所以刪除最貴的一朵花。
-1 完成新增與刪除,開始包裝花束
若刪除操作時沒有花,則跳過刪除操作。
如果加入的花朵**已經與花束中已有花朵**重複,則這一朵花不能加入花束。
請你幫小明寫乙個程式,計算出開始包裝花束時,花束中所有花的美麗值的總和,以及小明需要為花束付出的總**。
輸入格式:
若干行,每行乙個操作,以-1結束。
輸出格式:
一行,兩個空格隔開的正整數表示開始包裝花束時,花束中所有花的美麗值的總和。以及小明需要為花束付出的總**。
輸入樣例#1:
1 1 11 2 5
21 3 3
31 5 2
-1
輸出樣例#1:
8 5
對於20%資料,運算元<=100,1<=w,c<=1000。
對於全部資料,運算元<=100000,1<=w,c<=1000000。
【題目解釋】
正解是線段樹來搞
但是資料比較水,暴力也能卡一卡,下面是o(n) 的暴力,這題是對不起線段樹的大名了(笑抽)
#include#include#include
#include
int cnt=0
;int
x;bool flag=0
;bool xx[1000001]=;
using
namespace
std;
struct
nodeh[
100010
];int cmp2(const node a,const
node b)
int cmp1(const node a,const node b)//
cong xiao dao da
void
ex()
void
cheap()
intmain()
else
}if(x==2
)
if(cnt>0
) ex();
if(x==3
)
if(cnt>0
) cheap();
scanf("%d
",&x);
}int ans1=0,ans2=0
;
for(int i=1;i<=cnt;i++)
ans1+=h[i].w,
ans2+=h[i].c;
printf(
"%d %d
",ans1,ans2);
return0;
}
洛谷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 小明覺得當前花束中最便宜的一朵花太廉價,不適...