Codeforces 768G The Winds of Winter
有一棵 n n n个点的有根树,在删掉一个点后得到一个森林,现在可以把某个点的父亲换为另一个点,使得节点数最大的子树的大小最小。要求对每个点求删掉该点后的答案。
n ≤ 1 0 5 n\le10^5 n≤105
设 s i z e [ x ] size[x] size[x]表示子树大小,用主席树维护一下每个点子树中的 s i z e size size和它到根路径上的 s i z e size size,每次一定是把删掉该点后最大的树的某棵子树接到最小的树上,于是直接在主席树上查询即可。
时间复杂度 O ( n log n ) O(n\log n) O(nlogn)
hdu 6312 Game
有一个集合 S = { 1 , … , n } S=\{1,\dots,n\} S={ 1,…,n},两个人轮流操作,每次可以选走集合中的一个数和它的所有约数,问先手是否必胜。
T ≤ 10 , n ≤ 500 T\le10,n\le500 T≤10,n≤500
结论是先手必胜。若局面 S ′ = { 2 , … , n } S'=\{2,\dots,n\} S′={
2,…,n}是先手必胜,则先手可用同样的方式获胜,反之则先手第一步取 1 1 1,同样是先手必胜。
时间复杂度 O ( 1 ) O(1) O(1)
luogu 2791 幼儿园篮球题
有 n n n个球,其中有 m m m个蓝球, n − m n-m n−m个红球。现在从中选 k k k个球,选中 x x x个蓝球的代价为 x L x^L xL,问期望代价。
T ≤ 200 , n , m ≤ 2 ∗ 1 0 7 , L ≤ 2 ∗ 1 0 5 T\le200,n,m\le2*10^7,L\le2*10^5 T≤200,n,m≤2∗107,L≤2∗105
答案为 ∑ i = 0 k ( m i ) ( n − m k − i ) i L \sum_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}i^L i=0∑k(im)(k−in−m)iL
= ∑ i = 0 k ( m i ) ( n − m k − i ) ∑ j = 1 i ( i j ) S ( L , i ) i ! =\sum_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}\sum_{j=1}^i\binom{i}{j}S(L,i)i! =i=0∑k(im)(k−in−m)j=1∑i(ji)S(L,i)i!
= ∑ j = 1 k S ( L , i ) i ! ∑ i = 0 k ( m i ) ( i j ) ( n − m k − i ) =\sum_{j=1}^kS(L,i)i!\sum_{i=0}^k\binom{m}{i}\binom{i}{j}\binom{n-m}{k-i} =j=1∑kS(L,i)i!i=0∑k(im)(ji)(k−in−m)
= ∑ j = 1 k ( m j ) S ( L , i ) i ! ∑ i = 0 k ( m − j i − j ) ( n − m k − i ) =\sum_{j=1}^k\binom{m}{j}S(L,i)i!\sum_{i=0}^k\binom{m-j}{i-j}\binom{n-m}{k-i} =j=1∑k(jm)S(L,i)i!i=0∑k(i−jm−j)(k−in−m)
= ∑ j = 1 k ( m j ) ( n k ) S ( L , i ) i ! =\sum_{j=1}^k\binom{m}{j}\binom{n}{k}S(L,i)i! =j=1∑k(jm)(kn)S(L,i)i!
预处理斯特林数即可。
hdu 6314 Matrix
求有多少个 n ∗ m n*m n∗m的 01 01 01矩阵满足至少有 a a a行 b b b列全是 1 1 1。
T ≤ 5 , n , m ≤ 3000 T\le 5,n,m\le3000 T≤5,n,m≤3000
若只考虑行的情况,设容斥系数为 f i f_i fi,则 a n s = ∑ i = a n ( n i ) f i 2 n m − i m ans=\sum_{i=a}^n\binom{n}{i}f_i2^{nm-im} ans=i=a∑n(in)fi2nm−im
且可以得到 ∑ j = a i ( i j ) f j = 1 \sum_{j=a}^i\binom{i}{j}f_j=1 j=a∑i(ji)fj=1
可以 O ( n 2 ) O(n^2) O(n2)递推出 f i f_i fi,列的容斥系数同理,然后对两维分别容斥即可。
Codeforces 786E ALT
给定 n n n个节点的树,有 m m m个点对 ( x i , y i ) (x_i,y_i) (xi,yi)。现在要给若干条边和点对分配狗,对于个点对需要满足要么路径有狗,要么树上 x i x_i xi到 y i y_i yi路径上的每条边都有狗,问最少需要多少条狗。
n ≤