[最短路] [计数] [ARC090E] Avoiding Collision
posted on 2024-01-30 12:17:13 | under 题集 | source
考虑容斥:不相遇方案 \(=\) 总方案 \(-\) 相遇方案。
考虑求总方案,预处理 \(dis_i,dis2_i,cnt_i,cnt2_i\),表示
\(s/t\) 到 \(i\) 的最短路长度 / 方案数,则总方案 \(= {cnt_{t}}^2\)。
考虑给相遇方案分类,显然不能将每条边的方案相加,这样重合端点会算重,不妨分为点上相遇和边(不包括两端点)上相遇。
- 点:条件是 \(dis_i+dis2_i=dis_t\),方案为 \((cnt_i*cnt2_i)^2\)。
- 边:条件可转换为存在某一时刻,使得两点均在边(不包括两端点)上,正确性显然,那么两点在该边的时间段分别为 \([dis_u,dis_u+w]\) 和 \([dis2_v,dis2_v+w]\),判断区间相交即可。即:\(dis_u+w>dis2_v\) 且 \(dis2_v+w>dis_u\)。方案数:\((cnt_u*cnt2_v)^2\)。

浙公网安备 33010602011771号