T1.开屏雷击:
Bitset Master
O
(
n
m
)
O(nm)
O(nm)暴力。
出题人开了时限
6
s
6s
6s,然后心机的让
m
=
3
n
m = 3n
m=3n,
奈何
O
(
n
m
)
O(nm)
O(nm)跑过了
n
=
30000
n = 30000
n=30000的点。
O
(
n
m
w
+
n
2
)
O(\frac {nm}w + n^2)
O(wnm+n2)算法:
每次合并的时候同时维护一个
u
u
u被多少个节点
v
v
v包含。
合并可以用
b
i
t
s
e
t
bitset
bitset优化成
O
(
n
m
w
)
O(\frac {nm}w)
O(wnm),
合并
u
,
v
u,v
u,v时可以考虑求出
S
(
u
)
x
o
r
S
(
v
)
S(u) xor S(v)
S(u)xorS(v)也就是集合中不同的点,然后对这些点维护一个
u
u
u被多少个节点
v
v
v包含,总共只会维护
O
(
n
2
)
O(n^2)
O(n2)次。
O
(
m
)
O(m)
O(m)的解决先做完所有修改再询问的数据点的算法:
详见
O
(
(
n
+
m
)
log
2
n
)
O((n+m)\log^2 n)
O((n+m)log2n)正解:
这个这个,。。就是就是。。。。
离线分治回答询问,
维护时间点因为总变化量是
O
(
m
)
O(m)
O(m)的
所以是需要快速找,暴力修改。
T2:
完全图(要写矩阵快速幂):
if(m==n*(n-1)/2)
{
mat t;t.a[0][0]=0;t.a[0][1]=P-1;t.a[1][0]=1;t.a[1][1]=n+2;
t=pw(t,k);int s=t.a[1][0];
printf("%d\n",1ll*pw(n,n-2)*pw(s,n-1)%P);
return 0;
}
n
<
=
5
n<=5
n<=5
写
B
M
BM
BM
(不知道
(
n
∗
100
)
4
(n*100)^4
(n∗100)4怎么过的。)
下面:
数理知识
笛卡尔积:
说人话:你不需要知道什么是笛卡尔积。
很牛逼,我们又证明了一次某C定理。
这题就是不想让人过的。
resultant:上面的PPT中有,具体就是对特征值的操作什么的。
PS: 如果这个题是复制
k
k
k个图然后两两对应编号连边就简单多了,只需要求两次行列式即可简单个锤子。
T3:求
∑
x
=
1
n
lcm
(
x
,
x
+
1
,
…
,
x
+
k
)
\sum\limits_{x = 1}^n \textrm{lcm}(x, x + 1, \dots, x + k)
x=1∑nlcm(x,x+1,…,x+k)对
1
e
9
+
7
1e9+7
1e9+7 取模的结果。
猜想
x
∗
(
x
+
1
)
∗
⋯
∗
(
x
+
k
)
x* (x + 1)* \dots*(x + k)
x∗(x+1)∗⋯∗(x+k)和
lcm
(
x
,
x
+
1
,
…
,
x
+
k
)
\textrm{lcm}(x, x + 1, \dots, x + k)
lcm(x,x+1,…,x+k)有关。
令
f
(
x
)
=
x
∗
(
x
+
1
)
∗
⋯
∗
(
x
+
k
)
lcm
(
x
,
x
+
1
,
…
,
x
+
k
)
f(x) = \frac {x* (x + 1)* \dots*(x + k)}{\textrm{lcm}(x, x + 1, \dots, x + k)}
f(x)=lcm(x,x+1,…,x+k)x∗(x+1)∗⋯∗(x+k)
容易发现
f
(
x
)
f(x)
f(x)是有周期的。
并且发现
16
16
16的周期是
720720
720720
720720,就可以愉快的拉格朗日插值
O
(
k
2
∗
720720
)
O(k^2*720720)
O(k2∗720720)得到
70
p
t
s
70pts
70pts.
可以
O
(
k
∗
720720
)
O(k*720720)
O(k∗720720)
可以把求答案的式子化成
∑
i
=
0
n
−
r
L
c
i
(
L
∗
i
+
r
k
+
1
)
\sum_{i=0}^{\frac {n-r}L} c_i\binom{L * i + r}{k+1}
∑i=0Ln−rci(k+1L∗i+r)的形式。
再范德蒙德恒等式:
∑
i
=
0
n
−
r
L
c
i
∑
j
=
0
i
(
L
∗
i
j
)
(
r
k
+
1
−
j
)
=
∑
j
=
0
i
(
r
k
+
1
−
j
)
∑
i
=
0
n
−
r
L
c
i
(
L
∗
i
j
)
\sum_{i=0}^{\frac {n-r}L} c_i \sum_{j=0}^i \binom{L * i}{j} \binom{r}{k+1-j} = \sum_{j=0}^i \binom{r}{k+1-j}\sum_{i=0}^{\frac {n-r}L} c_i\binom{L * i}{j}
∑i=0Ln−rci∑j=0i(jL∗i)(k+1−jr)=∑j=0i(k+1−jr)∑i=0Ln−rci(jL∗i)
对于这个题
n
−
r
L
\frac {n-r}L
Ln−r只有2个取值,所以预处理后面的
Σ
\Sigma
Σ然后就可以
O
(
k
)
O(k)
O(k)算了。
发现
f
(
x
)
f(x)
f(x)的质因数
≤
k
\leq k
≤k
猜想:
f
(
x
)
f(x)
f(x)中
p
(
p
r
i
m
e
)
p(prime)
p(prime)的次数和
x
(
m
o
d
p
e
)
x\pmod {p^e}
x(modpe)有关
然后就把
1...30
1...30
1...30的质数分成两组。
然后
L
L
L就是
3
e
5
3e5
3e5的级别,然后双指针套卷积合并组合形式幂级数的式子就可以卡过了。
牛逼做法
还需要优化:
如:
k
=
15
,
(
m
o
d
13
)
k = 15 , \pmod {13}
k=15,(mod13)时。
基础贡献加入反例,贡献乘起来,我在复读
就是把
x
(
m
o
d
p
e
)
x \pmod {p^e}
x(modpe)的
p
e
p^e
pe类强行用人类智慧减少讨论范围,
k
=
25
k=25
k=25时只有
4
e
5
4e5
4e5项容斥系数,可以直接过。
取模卡常小技巧
for
f += a * b
(f>=p^2) && (f -= p^2)
endfor
f %= p;
…
好像。。