E
题目大意
用
F
i
F_i
Fi 表示斐波那契额数列的第
i
i
i 项,其中
F
1
=
0
,
F
2
=
1
F_1=0, F_2=1
F1=0,F2=1 。
一个数
n
n
n 是
k
k
k 好的当且仅当存在一个单调不降的序列
a
1
…
k
a_{1\dots k}
a1…k ,使得
n
=
∑
i
=
1
k
F
a
i
n=\sum_{i=1}^k F_{a_i}
n=∑i=1kFai 。给定
T
T
T 个
k
k
k ,对于每一个
k
k
k ,求出最小的,不是
k
k
k 好的数,结果对
998244353
998244353
998244353 取模。
题解
找规律。
实际上
A
N
S
k
=
F
2
k
+
4
\mathrm{ANS}_k = F_{2k+4}
ANSk=F2k+4 ,用快速幂+矩阵加速即可
G
题目大意
给定一个 n n n 个点, m m m 条边的联通无向图,接下来有 q q q 次操作,每次操作有两种:
- 1 u v \texttt{1 u v} 1 u v : 在节点 u , v u,v u,v 之间连接一条新的边。
- 2 u v \texttt{2 u v} 2 u v : 询问从 u u u 到 v v v 的所有路径的边的交的大小。
每个数据点最多 10 10 10 组数据。
1 ≤ n , m , q ≤ 1 × 1 0 5 1\leq n, m, q\leq 1\times 10^5 1≤n,m,q≤1×105
题解
一定要使用快读。
可以首先建立一颗生成树,每加入一条非树边以及新加入的边,假设为 ( u , v ) (u,v) (u,v),都可以认为 u , v u,v u,v 的树上路径上的所有边都不会对之后的所有询问产生贡献,这一部分可以用路径覆盖+路径覆盖量查询完成。但是不能直接用 树链剖分和线段树 做,因为时间复杂度多了一个 log 2 n \log_2 n log2n ,但是可以使用并查集做到均摊 O ( n ) O(n) O(n) 。
H
题目大意
给定一颗 n n n 个点,边有边权,点有点权的无根树,选择一条路径 u → v u\rightarrow v u→v,使得 w u − ∑ e ∈ P a t h ( u → v ) w e − w v w_u -\sum_{e\in \mathrm{Path(u\rightarrow v)}}w _e - w_v wu−∑e∈Path(u→v)we−wv 。求这个最大值。
每个数据点最多 10 10 10 组数据。
1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1≤n≤105
题解
一定要使用快读。
使用
dp
\texttt{dp}
dp :
f
(
u
,
0
)
=
max
{
max
v
∈
s
o
n
(
u
)
{
f
(
v
,
0
)
−
w
(
u
,
v
)
}
w
u
f
(
u
,
1
)
=
min
{
min
v
∈
s
o
n
(
u
)
{
f
(
v
,
1
)
+
w
(
u
,
v
)
}
w
u
a
n
s
=
max
u
=
1
n
{
f
(
u
,
0
)
−
f
(
u
,
1
)
}
\begin{aligned} f(u,0) &= \max\begin{cases} \max_{v\in \mathrm{son}(u)} \{f(v, 0)-w_{(u,v)}\}\\ w_u \end{cases}\\ f(u,1) &= \min\begin{cases} \min_{v\in \mathrm{son}(u)} \{f(v,1)+w_{(u,v)}\}\\ w_u \end{cases}\\ \mathrm{ans}&=\max_{u=1}^n\{f(u,0)-f(u,1)\} \end{aligned}
f(u,0)f(u,1)ans=max{maxv∈son(u){f(v,0)−w(u,v)}wu=min{minv∈son(u){f(v,1)+w(u,v)}wu=u=1maxn{f(u,0)−f(u,1)}