jzoj4711 Binary 樹狀陣列

2021-07-16 20:26:05 字數 722 閱讀 3416

每一位分別考慮,沒有加操作時直接開個計數器查詢就可以了。有了加操作,我們要考慮加對二進位制的影響。一位一位考慮,儲存當前位及以下的狀態,存到資料結構裡,y是1才有可能有貢獻。不進製時2^(i-1)<=ai+x<=2^i-1。進製時2^i+2^(i-1)<=ai+x<=2^(i+1)-1。

#include

#include

#include

#include

#include

#define lf double

#define ll long long

#define fo(i,j,k) for(int i=j;i<=k;i++)

#define fd(i,j,k) for(int i=j;i>=k;i--)

using

namespace

std;

intconst maxn=100000,maxa=1

<<21,inf=2147483647;

int n,q,a[maxn+10],cnt[20+10],t[21][maxa+10];

void add(int p,int v,int w)

}int qury(int p,int v)

return ans;

}int main()

else

printf("%lld\n",ans);}}

return

0;}

JZOJ 6276 樹 掃瞄線 線段樹

傳送門 有一棵無根樹,現在有m mm個點對x,y x,yx,y,要求在任意u,v u,vu,v的簡單路徑上不能既經過x xx又經過y yy問一共有多少路徑滿足要求 正著推看起來思維難度很高,所以我們喜聞樂見的反著推,找出不合法的方案數就好了 我們先求出無根樹的dfs dfsdf s序,在輸入每個點對...

JZOJ5077 樹的難題

給定一棵 n 個點的無根樹,樹上每一條邊都有顏色。一共 m種顏色,編號從 1 到m。第 i 種顏色權值為ci 對於樹上的一條簡單路徑,路徑上經過的所有邊按照順序組成乙個顏色序列,序列可以劃分成若干個相同顏色段。定義路徑權值為顏色序列上每乙個同顏色段的顏色權值之和。你要計算出邊數在 l r 之內的所有...

jzoj3555 樹的直徑

科學家在觀測一棵大樹,這棵樹在不斷地生長,科學家給這棵樹的每個節點編了號。開始的時候,這棵樹很小只有4個節點,一號點為根,其他三個節點掛在上面。在接下來的m次觀察中,科學家每次都能看見這棵樹從葉子處長出新的兩個節點來。如果當前這棵樹有n個節點,那麼這棵樹的新的兩個節點的編號分別為n 1,n 2。科學...