2019徐州網路賽 query

2021-10-01 02:24:36 字數 838 閱讀 2156

題目鏈結

題解,這個題目巧妙地按下標進行樹狀陣列處理,先預處理所有有倍數關係的和每個元素的位置i,然後把下標小的存到下標大 的陣列中,

查詢也離線,然後從左到右,邊加入,邊求和。

**

#include

#include

#include

using namespace std;

int n;

int sum[

100005];

int pos[

100005];

int ans[

100005];

struct node

node

(int i,

int l1)};

vectors[

100005];

vector<

int> ss[

100005];

void

add(

int i,

int x)

}int

sum1

(int x)

return s;

}int

main()

for(

int i=

1;i<=n;i++)}

for(

int i=

1;i<=m;i++

)for

(int i=

1;i<=n;i++

)for

(auto p:s[i])}

for(

int i=

1;i<=m;i++

)return0;

}

2019徐州網路賽I題

已知數列p是1 n的排列,現在給定m組詢問,每組詢問給出左右端點l和r,求出 l,r 區間中有多少對滿足p i p j 0 或 p j p i 0,要求i首先維護乙個字首和sum,其中sum i 維護的是 1,i 中滿足條件的對數。那麼對於詢問 l,r 結果就是sum r sum l 1 但是這看上...

2019ICPC徐州網路賽

theme n個數編號為1 n,兩種操作 1 x 將編號為x的數置為不可得,2 x 詢問x位置及其後第乙個可得數的編號。1 n,x 1e9,1 q 1e6 solution 首先想到用線段樹維護。初始時線段樹每個l r位置的值為l,1 x操作對應將x位置值置為inf,2 x 操作相當於查詢區間 x,...

2018徐州網路賽

a.hard to prepare dp 題目 題意 環形圈中,給每人乙個號碼,求使得相鄰數字反異或為正數的方案數。有題意可推出,每兩個數反異或要麼是0要麼是正數,所以也就是讓相鄰數字反異或後不能為0。又知道,與某個數反異或之後為0的只有唯一乙個數,因此可推出第1個人到第n個人分別可選的數的個人為 ...