当前位置: 首页 > news >正文

[ICPC 2022 Nanjing R] 工厂重现

[ICPC 2022 Nanjing R] 工厂重现 - 洛谷P14160

这个题应该是这个题的加强版,其实差不多。

标签 Minkowski, 平衡树

把一条路径拆到每条边的贡献,若 \(u\) 的子树内有 \(c\) 个黑点,\((u, fa_u)\) 的贡献是 \(c(k - c)\)

\(f_u(i)\) 表示 \(u\) 的子树内选取 \(i\) 个黑点的答案。

合并子树时,\(f_u(i) = \min \{ f_v(j) + wj(k - j) + f_u(i - j) \}(w 为 (u, fa_u) 边权)\)

\(g_v(j) = f_v(j) + wj(k - j)\),很显然是一个闵可夫斯基和的形式。

考虑 \(f, g\) 的差分数组,\(\Delta g_v(j) = \Delta f_v(j) - 2wj + (k + 1)w\)。这玩意怎么搞?

为了保证维护差分数组的从小到大排序的顺序(归并),同时加的东西与 \(j\) 相关,只能使用平衡树了,打个懒标记即可。

因为两棵树没有什么性质,还是要启发式合并,把 \(sz\) 小的那棵上的节点一个一个丢大 \(sz\) 大的。所以时间复杂度:\(O(n \log^2 n)\)

因为蒟蒻只会 FHQ,所以说说写 FHQ 的坑点(可能不太清楚,可以忽略):

  • split, Merge 时都需要下传懒标记,否则少了/多了一个儿子以后下传有 \(bug\)
  • 不妨设一次项、常数项的 \(tag\) 分别为 tagk, tagb。为了保证下传时的 \(j\) 还是原来的 \(j\)(因为经过 split, Merge 后的 \(sz\) 不太可靠),可以 update 时直接把 tagk * c 直接加入到 tagb ,而不是每次开一个 \(sum\) 记录当前节点前面还有几个节点。
void update(int c, int x, int k, ll s) {if (!x) return;s += 1ll * c * k, tr[x].val += s + 1ll * rnk(x) * k;tr[x].tagk += k, tr[x].tagb += s;
}
http://www.jsqmd.com/news/101103/

相关文章:

  • 微信多设备登录终极解决方案:WeChatPad平板模式完整指南
  • 详细介绍:算法王冠上的明珠——动态规划之斐波那契数列问题
  • 音乐格式解放攻略:NCM转MP3轻松实现跨平台播放
  • 写了这么多年 Java,这几个神仙技巧你真的用过吗?
  • Zipkin 深度解析:核心原理、集成实战与最佳实践
  • 20 万级新能源 SUV 标杆车型盘点:从技术到体验的全面对比
  • Java新手做毕设:用雷池WAF护SpringBoot项目,避免演示时出洋相
  • 微服务踩坑实录:SpringCloud集群用雷池WAF,解决3个跨服务防护难题
  • Google Drive下载神器:gdrivedl使用完全指南
  • 7.2.2-bpf对tcp请求的监控(项目)
  • AES-GCM加密全流程解析
  • 开源精神再现辉煌:LobeChat推动AI普惠化进程
  • 第三讲:如何用 AI 快速生成可用应用——实战示例
  • NVIDIA Profile Inspector终极指南:从入门到精通的完整图形优化手册
  • 内容解锁神器:Bypass Paywalls Clean 让你告别付费墙烦恼
  • Linux CFS(完全公平调度器)原理与实现细节全解析(2)
  • SillyTavern轻松搞定版本升级:从焦虑到自信的无忧指南
  • 10分钟精通原神智能助手:从零到精通的完整配置指南
  • 视频创作者必看!这7个素材网站
  • LangChain 1.0 VS LangGraph 1.0:智能体我该用哪一个?
  • 比手动排查快10倍:自动化修复Python库缺失问题
  • 怎么查看自己Ubuntu剩余空间有多少个G呢?
  • LobeChat镜像优势详解:为何它成开源大模型前端首选?
  • LobeChat医疗健康问答合规性讨论
  • 5分钟验证:不安装运行时也能测试.NET应用的新方法
  • 手写海康OpenApi签名规范,实现手动调用api(sdk:artemis-http-client)
  • MHT-FE710 光纤组合导航系统技术指南:高精度导航的多接口适配与工程实践
  • 吹爆FreeBuds SE4 ANC的新音效 | 浅聊体验
  • 网盘直链解析终极方案:彻底告别下载限制的完整指南
  • 纪念币预约神器:3步实现高效自动预约的终极指南