TJOI 2018 题解

[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(fi1,j,fi,j1,fi1,j1+[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} fi1,j,fi1,j1,fi,j
发现需要不好办的就是 f i , j − 1 f_{i,j-1} fi,j1 的状态
有个暴力的办法就是开一个15维的数组记录 f i , j − 1 f_{i,j-1} fi,j1 的所有第 j-1 层的 f i f_{i} fi
然后发现 f i − f i − 1 ≤ 1 f_i-f_{i-1} \le 1 fifi11,所以差分一下是一个 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,用拉格朗日插就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值