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 ...