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

QOJ4795 Taxi

题意简述

给定一颗 \(n\) 个点的树,边有边权。有 \(m\) 个独立的乘客和 \(m\) 个独立的司机,每个人选一个节点。将乘客与司机匹配,使得距离之和最大。

求所有 \(n^{2m}\) 种可能情况的距离之和 \(\bmod 10^9+7\)

\(1\le n,m\le 2500\)

题解

考虑一条边的两个端点对应的子树,记其中一半包含 \(a\) 个乘客和 \(b\) 个司机,则这条边最多被算 \(\min(a,m-b)+\min(b,m-a)\) 次,考虑取到这个上界。

将乘客视为源点,司机视为汇点,即需要证明每个点流量平衡。若一个点有 \(A\) 个乘客,\(B\) 个司机,与其相连的所有子树集合为 \(S\),记 \(a_x,b_x\) 为子树 \(x\) 中乘客、司机的数量,则

\[\begin{aligned} &(A+\sum_{x\in S}\min(a_x,m-b_x))-(B+\sum_{x\in S}\min(b_x,m-a_x))\\ =&(A+\sum_{x\in S}\min(a_x+b_x,m)-b_x)-(B+\sum_{x\in S}\min(a_x+b_x,m)-a_x)\\ =&(A+\sum_{x\in S}a_x)-(B+\sum_{x\in S}b_x)\\ =&0 \end{aligned} \]

发现 \(\min(a,m-b)+\min(b,m-a)=\min\{a+b,2m-a-b,m\}\),于是直接 \(\mathcal O(nm)\) dp 就做完了。

http://www.gsyq.cn/news/42208.html

相关文章:

  • 蓝牙耳机怎么连接电脑?【图文详解】蓝牙耳机连接电脑?蓝牙耳机能连接电脑吗?USB蓝牙适配器? - 详解
  • AI浪潮下的就业迷思:技术迭代还是泡沫破灭?
  • Spring BeanFactory 接口
  • 备考笔记8
  • CF2122D Traffic Lights
  • 《代码大全 2》观后感(五):注释 —— 代码与 “未来” 的对话
  • 库相关的操作
  • 洛谷 P5327
  • 完整教程:mysql表的操作——mysql表的约束
  • 鸿蒙应用开发零基础入门:从工具到语言,轻松开启第一步
  • 通过重写组件轻松掌握用JSX写Vue项目
  • 洛谷 P3233
  • 组件理解
  • “模型法线到视图法线”的变换矩阵(normal matrix)的计算和作用
  • 去年夏天
  • aspose-pdf 修改pdf文件备忘录
  • 函数名与函数地址的关系(函数指针)
  • 别再选错!5分钟掌握AI Agent框架选型的方法
  • Linux - 7 磁盘管理篇
  • Markdown之Typora语法
  • markdown入门(复盘)
  • 卡尔算法哈希表
  • Rust 之二 各组件工具的源码、构建、配置、使用 - 教程
  • 新东方听力day2
  • 超级管理员目录索引的Google搜索技巧
  • 无限欢愉 深入推进 我沦陷在那片故地 我渴饮着 你的呼吸 却得不到 你的心
  • 基础架构
  • Word表格1.5倍行距居中问题
  • 详细介绍:后端_Redis 分布式锁实现指南
  • 日总结 23