HDU 4267 三維樹狀陣列

2021-09-19 23:41:49 字數 470 閱讀 1018

1.題目鏈結。題目的操作其實很像去區間修改,區間查詢的操作了,但是這個操作的區間不再是連續的了,而是離散的。但是這裡還是可以用樹狀陣列維護的,因為k很小,所以k和i%k其實只有c(10,2)種情況,我們對每一種情況建一顆樹狀陣列,然後查詢的時候查對應的樹狀陣列即可。

#includeusing namespace std;

#define lowbit(x) (x)&(-x)

const int maxn = 50000 + 5;

int num[maxn];

int c[maxn][11][11];

int n;

void add(int x, int k, int mod, int val)

int sum(int x, int a)

int main()

else

} }return 0;

}

分狀態的樹狀陣列hdu 4267

我們用tree v k mod 來表示樹狀陣列的狀態。假如a b c k,那麼用樹狀陣列,區間更新,update b,a k,k,c update a 1,a k,k,c 就可以了 也就是說,區間 1,b 內每個ui k mod 那麼ui 的值就加c 然後 1,a 1 區間內每乙個ui c,於是就完...

hdu4267(樹狀陣列,有規則區間修改)

hdu4267 題目大意 一段序列,修改某個區間 下標號成等差序列 的元素的值,查詢某個點的值 對每個公差 以及 某段開始下標對每個公差的取餘 確定某個點被修改的方式,或者這個修改的起始位置?建立k k個樹狀陣列 include include include include include inc...

hdu 3584 cube 三維樹狀陣列

儘管還是沒怎麼想通這題為什麼可以這樣解,權當是拿來練練三維樹狀陣列了。include include define lowbit i i i define n 128 int a n n n void update int i,int j,int k int sum int i,int j,int ...