1394 差和問題

2022-08-02 23:15:12 字數 2464 閱讀 1466

1394 差和問題

基準時間限制:1 秒 空間限制:131072 kb

有乙個多重集合s(即裡面元素可以有重複),初始狀態下有n個元素,對他進行如下操作:

1、向s裡面新增乙個值為v的元素。輸入格式為1 v

2、向s裡面刪除乙個值為v的元素。輸入格式為2 v

3、詢問s裡面的元素兩兩之差絕對值之和。輸入格式為3

對於樣例,

操作3,|1-2|+|1-3|+|2-3|=4

操作1 4之後,集合中的數字為1 2 3 4

操作3,|1-2|+|1-3|+|2-3|+|1-4|+|2-4|+|3-4|=10

操作2 2之後,集合中的數字為1 3 4

操作3,|1-3|+|1-4|+|3-4|=6

input

第一行輸入兩個整數n,q表示集合中初始元素個數和操作次數。(1<=n,q<=100,000)

第二行給出n個整數a[0],a[1],a[2],…,a[n-1],表示初始集合中的元素。(0<=a[i]<=1,000,000,000) 

接下來q行,每行乙個操作。(0<=v<=1,000,000,000)

output

對於第2類操作,如果集合中不存在值為v的元素可供刪除,輸出-1。

對於第3類操作,輸出答案。

input示例

3 5

1 2 3

31 4

32 2

3

output示例

4106

思路:離散化+數狀陣列;

維護兩個樹狀陣列,乙個為區間的和,另乙個為區間個數,然後離線查詢。插入和刪除乙個數字的時候要統計一下這個對答案的影響。當前數字為x,比當前數字小的有cnt個,總和為sum,那麼這一部分對答案的影響是x*cnt-sum.對於求比當前數字大的數字類似的道理。

1 #include2 #include3 #include4 #include5 #include6 #include

7 #include8 #include9

using

namespace

std;

10 typedef long

long

ll;11 ll num[100005

];12 typedef struct

node

13 ss;

18 typedef struct

pp19

ap;23 ss ask[100005

];24 mapint>my;

25 ll ac[400000

];26

int id[100005

];27 ll bit_ans[200005

];28 ll bit_sum[200005

];29 ll sum1(int

i);30

void add1(int i,ll x,int

n);31 ll sum2(int

i);32

void add2(int i,ll x,int

n);33 ll akk[100005

];34

int main(void)35

48for(i = 1; i <= q; i++)

4957 ask[i].id =i;

58 }//

printf("1\n");

59 sort(num,num+n);

60 sort(ac,ac+cn);

61int acc = 1

;62 ll x = ac[0

];63 my[x] = 1;64

for(i = 1; i < cn; i++)

6572

}73 ll summ = 0;74

for(i = 0; i < n; i ++)

7581 akk[0]=summ;

82for(i = 1; i <= q; i++)

8389

else

9099

}100

else

if(ask[i].op == 1

)101

111else

112116

}117

return0;

118}

119 ll sum1(int

i)120

127return

s;128

}129

void add1(int i,ll x,int

n)130

136}

137 ll sum2(int

i)138

145return

s;146

}147

void add2(int i,ll x,int

n)148

154 }

51nod 1394 差和問題

1394 差和問題 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 有乙個集合s,初始狀態下有n個元素,對他進行如下操作 1 向s裡面新增乙個值為v的元素。輸入格式為1 v 2 向s裡面刪除乙個值為v的元素。輸入格式為2 v 3 詢問s裡面的元素兩兩之差絕對值之和...

1394雙機除錯的問題

我原來用串列埠除錯,速度很慢,現在買了乙個1394卡,結果雙機除錯總是連不上,請各位大俠教教我啊。具體情況是,筆記本原生1394,4針小口,台式電腦買了乙個via 1394 pci e卡插上,可以正確識別。台式電腦是大口6針1394介面,用4轉6的線盒筆記本連線。xp下面,系統自動安裝1394 網絡...

UVa 1394 約瑟夫問題的變形

本來是要昨天來寫這學習 的,然後昨晚寢室又斷電了,忍不住在這裡吐槽一下,嗯,寢室天天斷電。題意就是輸入n,k,m三個數,n個數排成乙個圈,第一次刪除m,以後每數k個數刪除一次,求最後乙個被刪除的數。言歸正傳,以前寫過乙個鍊錶的約瑟夫問題,但是在這裡肯定是會超時的。後來看了些參考,終於明白了怎麼做。把...