Chef and Maximum Star Value
显然如果一个数后面有它的因数,那么它一定不可能是最大值。先从后往前枚举一遍把这些数去掉,再从前往后做一遍,每个数枚举它所有倍数统计即可。
因为每个数最多只会做一次,时间复杂度是
O
(
T
A
i
log
A
i
)
O(TA_i\log A_i)
O(TAilogAi) 。
Array Modification
考虑每次遍历对于每一对
(
a
,
b
)
(a,b)
(a,b) 的影响:
(
a
,
b
)
→
(
a
x
o
r
b
,
a
)
→
(
b
,
a
x
o
r
b
)
→
(
a
,
b
)
(a,b)\rightarrow (a~xor~b, a)\rightarrow (b,a~xor~b)\rightarrow (a,b)
(a,b)→(a xor b,a)→(b,a xor b)→(a,b)
所以判下总共会有几次完全遍历
0
0
0 到
n
−
1
n-1
n−1,再把剩下的做一次就可以了。
要特判
i
=
n
−
i
−
1
i = n-i-1
i=n−i−1 的情况。
时间复杂度
O
(
T
N
)
O(TN)
O(TN) 。
Even Edges
对于
k
≥
4
k\geq4
k≥4 的情况,如果某
2
2
2 组点间有偶数条边,那么显然可以将它们合并。如果所有组之间都是奇数条边,那么任意选出
4
4
4 组合并成
1
1
1 组,这一组的边数也是偶数。
因此
k
≤
3
k\le 3
k≤3 。
当
m
m
m 为偶数时显然
k
k
k 即为
1
1
1 。
否则,若原图中有一个点度数为奇数,将它隔离后剩下的点的边数即为偶数,于是
k
=
2
k=2
k=2 。
而若原图中所有点度数都为偶数,那么无论怎么隔离出一组点,其与剩下的点间的边数一定是偶数,所以不可能
2
2
2 组点内部的边数都为偶数。此时
k
=
3
k=3
k=3 。
至于
k
=
3
k=3
k=3 时求出一个合法的答案,只需要找出一条边
(
u
,
v
)
(u,v)
(u,v),
u
u
u、
v
v
v、剩下的点各成一组即可。
Bacterial Reproduction
对于非叶子节点
u
u
u,它某个祖先
v
v
v 在
t
0
t_0
t0 时刻的操作对它在
t
1
t_1
t1产生影响的条件是
t
1
=
t
0
+
d
u
−
d
v
t_1=t_0+d_u-d_v
t1=t0+du−dv,即
t
1
−
d
u
=
t
0
−
d
v
t_1-d_u=t_0-d_v
t1−du=t0−dv 。
如果
u
u
u 是叶子节点,就变为
t
1
−
d
u
≥
t
0
−
d
v
t_1-d_u\geq t_0-d_v
t1−du≥t0−dv 。
那么离线之后遍历一遍树,记录下这些值就好了。
时间复杂度
O
(
N
+
Q
)
O(N+Q)
O(N+Q) 。
Queries on Matrix
假设最终有
r
r
r 行被加了奇数次,
c
c
c 列被加了奇数次,那么最终为奇数的格子数是
r
(
m
−
c
)
+
c
(
n
−
r
)
r(m-c)+c(n-r)
r(m−c)+c(n−r),因此可以算出有哪些
(
r
,
c
)
(r,c)
(r,c) 满足条件。
对于每对
(
r
,
c
)
(r,c)
(r,c),显然可以分开计算行和列的方案数,最后再乘起来。
以行为例,问题转化为用
1
−
n
1-n
1−n 填
Q
Q
Q 个位置,使得恰好有
r
r
r 个数的出现次数为奇数。这个可以用生成函数做,答案即为
(
x
1
!
+
x
3
3
!
+
x
5
5
!
+
.
.
.
)
r
(
1
+
x
2
2
!
+
x
4
4
!
+
.
.
.
)
n
−
r
(
n
r
)
Q
!
[
x
Q
]
({x\over 1!}+{x^3\over 3!}+{x^5\over 5!}+...)^r(1+{x^2\over 2!}+{x^4\over 4!}+...)^{n-r}{n\choose r}Q!~[x^Q]
(1!x+3!x3+5!x5+...)r(1+2!x2+4!x4+...)n−r(rn)Q! [xQ]
(
e
x
−
e
−
x
2
)
r
(
e
x
+
e
−
x
2
)
n
−
r
(
n
r
)
Q
!
[
x
Q
]
({e^x-e^{-x}\over 2 })^r({e^x+e^{-x}\over 2 })^{n-r}{n\choose r}Q!~[x^Q]
(2ex−e−x)r(2ex+e−x)n−r(rn)Q! [xQ]
(
∑
i
=
0
r
e
(
2
i
−
r
)
x
(
−
1
)
r
−
i
(
r
i
)
)
(
∑
j
=
0
n
−
r
e
(
2
j
−
n
+
r
)
x
(
n
−
r
j
)
)
1
2
n
(
n
r
)
Q
!
[
x
Q
]
(\sum_{i=0}^re^{(2i-r)x}{(-1)^{r-i}}{r\choose i})(\sum_{j=0}^{n-r}e^{(2j-n+r)x}{n-r\choose j}){1\over {2^n}}{n\choose r}Q!~[x^Q]
(i=0∑re(2i−r)x(−1)r−i(ir))(j=0∑n−re(2j−n+r)x(jn−r))2n1(rn)Q! [xQ]
先枚举
i
+
j
i+j
i+j :
(
∑
s
=
0
n
e
(
2
s
−
n
)
x
∑
i
=
0
s
(
−
1
)
r
−
i
(
r
i
)
(
n
−
r
s
−
i
)
)
1
2
n
(
n
r
)
Q
!
[
x
Q
]
(\sum_{s=0}^ne^{(2s-n)x}\sum_{i=0}^s{(-1)^{r-i}}{r\choose i}{n-r\choose s-i}){1\over {2^n}}{n\choose r}Q!~[x^Q]
(s=0∑ne(2s−n)xi=0∑s(−1)r−i(ir)(s−in−r))2n1(rn)Q! [xQ]
设
f
(
n
,
r
,
s
)
=
∑
i
=
0
s
(
−
1
)
r
−
i
(
r
i
)
(
n
−
r
s
−
i
)
f(n,r,s)=\sum_{i=0}^s{(-1)^{r-i}}{r\choose i}{n-r\choose s-i}
f(n,r,s)=∑i=0s(−1)r−i(ir)(s−in−r)
(
∑
s
=
0
n
e
(
2
s
−
n
)
x
f
(
n
,
r
,
s
)
)
1
2
n
(
n
r
)
Q
!
[
x
Q
]
(\sum_{s=0}^ne^{(2s-n)x}f(n,r,s)){1\over {2^n}}{n\choose r}Q!~[x^Q]
(s=0∑ne(2s−n)xf(n,r,s))2n1(rn)Q! [xQ]
(
∑
s
=
0
n
∑
i
=
0
∞
(
2
s
−
n
)
i
x
i
i
!
f
(
n
,
r
,
s
)
)
1
2
n
(
n
r
)
Q
!
[
x
Q
]
(\sum_{s=0}^n\sum_{i=0}^{\infin} {(2s-n)^ix^i\over i!}f(n,r,s)){1\over {2^n}}{n\choose r}Q!~[x^Q]
(s=0∑ni=0∑∞i!(2s−n)ixif(n,r,s))2n1(rn)Q! [xQ]
(
∑
s
=
0
n
(
2
s
−
n
)
Q
f
(
n
,
r
,
s
)
)
1
2
n
(
n
r
)
(\sum_{s=0}^n(2s-n)^Qf(n,r,s)){1\over {2^n}}{n\choose r}
(s=0∑n(2s−n)Qf(n,r,s))2n1(rn)
现在的问题就是对每个
n
,
r
n,r
n,r,如何快速求出
f
(
n
,
r
,
s
)
f(n,r,s)
f(n,r,s) 对
s
=
0...
n
s=0...n
s=0...n 的值。
因为
f
(
n
,
r
,
s
)
=
(
x
−
1
)
r
(
x
+
1
)
n
−
r
[
x
s
]
f(n,r,s)=(x-1)^r(x+1)^{n-r}~[x^s]
f(n,r,s)=(x−1)r(x+1)n−r [xs]
可以先预处理出
(
x
−
1
)
k
,
(
x
+
1
)
k
(
k
=
0...
n
)
(x-1)^k,(x+1)^k(k=0...n)
(x−1)k,(x+1)k(k=0...n),然后对每个
(
n
,
r
)
(n,r)
(n,r) NTT 乘一遍得到
(
x
−
1
)
r
(
x
+
1
)
n
−
r
(x-1)^r(x+1)^{n-r}
(x−1)r(x+1)n−r,于是就可以求出
f
(
n
,
r
,
s
)
f(n,r,s)
f(n,r,s) 对
s
=
0...
n
s=0...n
s=0...n 的值。
然后发现还是 T 了…
那么不妨再进一步,预处理出
(
x
−
1
)
k
,
(
x
+
1
)
k
(
k
=
0..
n
)
(x-1)^k,(x+1)^k(k=0..n)
(x−1)k,(x+1)k(k=0..n) 对在做 NTT 时每个可能的
m
=
2
i
m=2^i
m=2i 的 NTT 后的多项式,这样就可以在做每对
(
n
,
r
)
(n,r)
(n,r) 时少做
2
2
2 次 NTT 。
然后就卡过去了。
时间复杂度
O
(
n
2
log
2
n
+
T
n
2
log
n
)
O(n^2\log^2 n+Tn^2\log n)
O(n2log2n+Tn2logn) 。
Faulty System
挖坑