做题记录0(并查集|树状数组)

5.29

0x41 并查集

[NOI2015] 程序自动分析 离散化+并查集

UVA1316 Supermarket 贪心+并查集,价值大的尽量放后面

[NOI2002] 银河英雄传说 边带权并查集,每一列是一棵树,merge操作等于把一棵树加到另一个树根上,询问间隔等于两点与根距离的差,用d[]维护点到根的距离,合并时d[x]=sz[y],查询时d[x]=d[fa[x]];

[CEOI1999]Parity Game s[l...r]中有偶数个1表示sum[r]和sum[l-1]同奇偶,则题目转换成是否有奇偶矛盾.

维护d[x]表示x与根是否同奇偶,0是相同,如果x与y在同一树中,判断d[x]^d[y]是否与回答矛盾,若不在一棵树,令q是x的根,p是y的根,将p合并到q上,并推出d[p]=d[x] ^ d[y] ^ ans,(x -> p -> q -> y,相互异或的关系)

0x42 树状数组

A Simple Problem with Integers 维护区间加,区间查询和,数学推导下公式然后维护两个树状数组(E(i,1,x)E(j,1,i)b[j] = (x+1)Eb[i] - Ei*b[i])

Lost Cows 本质:输入从后往前遍历,找第a[k]+1个1的位置,把这个位置的数变成0;树状数组+倍增维护一下,注意:log2(n) = log(n)/log(2).....

posted @ 2021-05-30 00:26  LaiYiC  阅读(42)  评论(0编辑  收藏  举报