[TJOI2018]异或
建两棵可持久化 trie , 类似主席树一样查询就可以了
[TJOI2018]数学计算
用线段树维护一下区间乘就可以了
[TJOI2018]智力竞赛
题意:选
n
+
1
n+1
n+1 条可以相交的链,如果不能覆盖完,求最小的不能被覆盖的点
我们可以套路地对每个点拆点(入点出点),
i
−
>
i
′
i->i'
i−>i′连一条流量为
1
1
1, 费用为
1
1
1 的边,为了让它继续走,在连一条流量为
i
n
f
inf
inf,费用为 0 的边,然后二分答案,如果
v
i
>
m
i
d
v_i > mid
vi>mid,我们就不考虑它的贡献,将费用改成 0 就可以了,原点汇点把总流量限制到
n
+
1
n+1
n+1 即可
[TJOI2018]游园会
类似自动机一类的题,我们可以这样做
f
i
,
j
,
k
f_{i,j,k}
fi,j,k 表示当前到第 i 位,在自动机上的结点 j,匹配到
N
O
I
NOI
NOI 的第 k 位的方案数,然后就可以枚举下一位填什么转移了
考虑怎么表示自动机的状态,回忆到
l
i
s
lis
lis 的求法
f
i
,
j
=
m
a
x
(
f
i
−
1
,
j
,
f
i
,
j
−
1
,
f
i
−
1
,
j
−
1
+
[
a
i
=
b
j
]
)
f_{i,j}=max(f_{i-1,j}, f_{i,j-1}, f_{i-1,j-1}+[a_i=b_j])
fi,j=max(fi−1,j,fi,j−1,fi−1,j−1+[ai=bj])
不妨用
a
i
a_i
ai 表示原串,
b
i
b_i
bi 表示我们要去填的串
考虑从
f
i
,
j
f_{i,j}
fi,j 变到
f
i
,
j
+
1
f_{i,j+1}
fi,j+1,我们需要的是
f
i
−
1
,
j
,
f
i
−
1
,
j
−
1
,
f
i
,
j
f_{i-1, j}, f_{i-1, j-1}, f_{i,j}
fi−1,j,fi−1,j−1,fi,j
发现需要不好办的就是
f
i
,
j
−
1
f_{i,j-1}
fi,j−1 的状态
有个暴力的办法就是开一个15维的数组记录
f
i
,
j
−
1
f_{i,j-1}
fi,j−1 的所有第 j-1 层的
f
i
f_{i}
fi
然后发现
f
i
−
f
i
−
1
≤
1
f_i-f_{i-1} \le 1
fi−fi−1≤1,所以差分一下是一个 0/1 串,就可以记录了
每次转移的时候解压出
f
f
f, 然后转移出
f
f
f,再把
f
f
f 压成 0/1 串,妙啊!
[TJOI2018]碱基序列
d
p
+
h
a
s
h
dp+hash
dp+hash
[TJOI2018]教科书般的亵渎
发现主要是求
∑
i
k
\sum i^k
∑ik,用拉格朗日插就可以了
TJOI 2018 题解
最新推荐文章于 2021-09-01 14:41:21 发布