3.14做题记录

P5319 [BJOI2019]奥术神杖

多模式串,先上AC自动机
对ans取一个ln,就可以进行分数规划了
对答案二分,然后就是在AC自动机上dp, f i , j f_{i,j} fi,j表示到了字符串T的第i个位置,在Trie树上的位置为 j 的答案,然后就是简单转移了


代码

P4569 [BJWC2011]禁忌

在AC自动机上dp,设 f i , j f_{i,j} fi,j表示前 i 个字符,匹配到Trie上 j 位置的概率。
我们把结尾的tag沿着fail传递下来,dp转移的时候如果下一个位置有tag,那么就是要到0号节点+=当前概率 ∗ 1 a l p h a b e t * \frac{1}{alphabet} alphabet1,且答案加上当前的概率 ∗ 1 a l p h a b e t * \frac{1}{alphabet} alphabet1,没有tag就是直接加上当前概率 ∗ 1 a l p h a b e t * \frac{1}{alphabet} alphabet1

发现长度很大,可以用矩阵快速幂优化dp


代码

P7516 [省选联考 2021 A/B 卷] 图函数

这种很繁琐的计数,可以尝试考虑利用一个状态较少的东西计算贡献
这道题目就可以计算点对的贡献,一个点对(u,v)其中u<v的贡献会在f(u,G)中出现,当且仅当存在一条u->v 和 v->u 的路径,且路径上点的编号均大于u

简单证明,充分性显然,必要性证明:如果存在一个小于u的点k,且有u->k->v 和 v->k->u 的路径,那么u->k 和 k->u 的路径也必然存在,则 k 这个点将被更早地删除

由于删边很难计算,考虑倒着加边,每个点对的贡献一旦成立,会一直持续到最后,所以可以利用前缀和计算,考虑点对正反路径上的最小点值的最大值,那么这个点对会从这个时刻一直贡献到最后

代码

CF863F Almost Permutation

求出每个数的范围,网络流经典技巧,平方拆边
对于n个位置,拆成 a i , b i a_i,b_i ai,bi,S到 a i a_i ai b i b_i bi到T建流量为1,费用为0来把凭证n个人都填上数字,对于n个值,拆成 c i , d i c_i,d_i ci,di,对于每个位置的范围 a i a_i ai c j c_j cj连(1,0), d i d_i di b i b_i bi连(1,0),最后 c i c_i ci d i d_i di连(1,1),(1,3),(1,5)…

代码

P7706 「Wdsr-2.7」文文的摄影布置

线段树简单应用,处理好pushup即可
和那个小白逛公园很像


代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值