題目鏈結
題解,這個題目巧妙地按下標進行樹狀陣列處理,先預處理所有有倍數關係的和每個元素的位置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個人分別可選的數的個人為 ...