HDU 多校 Contest #2 简单记录

A

从大到小贪心加入,用并查集合并

B

一个经典的维护折现联通块的套路
我们按权值从小到大加入放到排列中某一个位置,若旁边有值就把贡献算上
我们维护 d p i , j , t dp_{i,j,t} dpi,j,t 表示 j j j 个连通块,两边有 t t t
注意考虑整体的增量,当前一步会整体拔高 ( 2 j − t ) ∗ ( a i − a i − 1 ) (2j-t)*(a_i-a_{i-1}) (2jt)(aiai1)
我们维护前二十个二元组 ( a , b ) (a,b) (a,b) 表示最大值以及最大值次数就可以 D p Dp Dp

C

利用这个结论:每个元素都是一个 [ 0 , 1 ] [0,1] [0,1] 的随机数,一个大小为 k k k 的中最小值的期望是 1 k + 1 \frac{1}{k+1} k+11,我们给每个颜色分配一个权值,那么就是求链的最小值,多分配几个正确概率就很高了

D

( 1 , 1 ) , ( n , n ) (1,1),(n,n) (1,1),(n,n) 做两边 D P DP DP,用主席树维护字典序比大小
考虑 b a n ban ban 掉一个矩阵会有一些格子是必经点,分别是一个前缀和后缀,求一个前缀 / 后缀 m i n min min 就可以了

E

把对称轴周围的 n n n 个点拿出来跑费用流

F

大力 H a s h Hash Hash

G

二分答案后,邻 d p i , j dp_{i,j} dpi,j 表示 i i i 的子树,选 j j j 条边且满足条件的情况下的最短链

H

线段树分治,注意到若 x > x i > x j x>x_i>x_j x>xi>xj j j j 不必 i i i 优,那么之后一定不比 i i i 优,对这个单调性进行再分治就可以了

I

注意到面积最大是 ( ∣ S ∣ 4 ) 2 (\frac{|S|}{4})^2 (4S)2,所以暴力把围出来的格子 b f s bfs bfs 一遍很正确

J

暴力 d f s dfs dfs 找哪一个复杂度很对

K

当前最优集合一定是上一步最优集合加入一个得来的
并且若知道集合的样子,肯定是按出锅时间从小到大吃
我们按出锅时间从小到大维护当前的最优集合,考虑将 i i i 插入一定会插入到 m a x ( t p , a i ) + b i < t p + 1 max(t_p,a_i)+b_i<t_{p+1} max(tp,ai)+bi<tp+1 的最前方,可以在平衡树上二分得到,接着需要将后面的修改为 m a x ( t , a ) + b max(t,a)+b max(t,a)+b,是一段 c o v e r cover cover,一段后缀加

L

l e n ≤ m len\le m lenm 时我们暴力 m 2 m^2 m2 D P DP DP
否则我们考虑最后的串一定是 T T T 删去一部分并且这部分在 S l . . . r S_{l...r} Sl...r 中出现
d p i , j dp_{i,j} dpi,j 表示考虑到第 i i i 位,删了 j j j 个匹配到最前面的点是哪一个
那么转移就是 d p i , j = min ⁡ { d p i − 1 , j − 1 , t r a n s ( T i , d p i − 1 , j ) } dp_{i,j}=\min\{dp_{i-1,j-1},trans(T_i,dp_{i-1,j})\} dpi,j=min{dpi1,j1,trans(Ti,dpi1,j)}
其中 t r a n s trans trans 表示下一个字符的出现位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FSYo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值