第二十九次

sto SoyTony orz

A

子树 u 内重心一定在其重儿子子树内重心 vu 的路径上,

于是每次从 v 往上暴力跳找到子树 u 内重心,注意到每条边最多被经过一次,所以复杂度线性。

B

枚举矩阵的列区间 [l,r],拿出每行的这个区间形成序列 {sn}

定义 si=sj,当且仅当它们可以重排为相同的串,

则问题变为求 s 有多少回文子区间 [x,y],满足其中每个串都可以重排为回文串。

预处理 zi,j 表示 ai,[1,j] 中出现奇数次的字符集合,则 si 可以重排为回文串当且仅当 |zi,rzi,l1|1

cΣ 赋随机权 oc,预处理 hi,j=k=1jai,k,则 sisj 可以重排为相同的串当且仅当 hi,rhi,l1=hj,rhj,l1

哈希二分统计回文子区间即可。

C

求出钦定这 k 条边存在的最小生成树 T,此时若非树边 uwv 存在,则 Tuv 路径上每条边都应 w

可并堆维护树链 check min 即可。

D

sto SoyTony orz

对行 x<y<z,列 l<r,从 (x,l)(z,r) 有三种移动方式:

  • (x,l)(x,r)(y,r),代价 (rl)ax+(zx)br
  • (x,l)(z,l)(z,r),代价 (zx)bl+(rl)az
  • (x,l)(y,l)(y,r)(z,r),代价 (yx)bl+(rl)ay+(zy)br

考虑啥时候 y 有用,第三种方案最优时有 ayaxyx<brblrl<azayzy,即有用的 a,b 斜率单调增,维护下凸壳。

考虑每次向下还是向右,向右更优时有 brblrl<azaxzx,于是每次会选斜率较小的方向,维护两个指针扫描两个凸包即可。

posted @   Jijidawang  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示