『模拟赛题解』10.4 NOIP 模拟赛

本文是10.4 NOIP 模拟赛的题解,涵盖四道题目:冤家路窄、吉利售价、首尾匹配和二分图排列。冤家路窄利用Dijkstra算法解决无向图中避免相遇的问题;吉利售价通过数论方法求解最大尾数连续数;首尾匹配运用Trie树进行二维数点查询;二分图排列问题采用动态规划策略寻找解决方案。
摘要由CSDN通过智能技术生成

10.4 NOIP 模拟赛

T1. 冤家路窄

Description

一个 n n n 个顶点 m m m 条边的无向图(顶点编号 1 ∼ n 1 \sim n 1n ,无重边和自环),通过其每条边都需要一定时间。

T小 A 和小 B 是一对冤家,开始时小 A 位于 S S S 点,小 B 位于 T T T 点。他们同时出发,分别沿着最短路去往对方所在的点,即小 A 要去往 T T T 点,小 B 要去往 S S S 点。

需要你来设计双方的路线,使得他们不会在途中相遇(即在某个时间点上,双方即不在同一个点上,也不在同一条边上)。求符合条件的方案数对 1 0 9 + 7 10^9 + 7 109+7 取模的结果。

Solution

考试的时候数组开小了,无向图……

用 dijkstra 分别跑出 $S \to $ 每个点和 $T \to $ 每个点的最短路,并在途中计算最短路条数(以下称为 c i c_i ci )。

S → T S \to T ST 的最短路长度为 d d d,考虑容斥原理:用总方案数减不符合要求的。

则总的方案数为 ( c t ) 2 (c_t)^2 (ct)2 。因为走的是最短路,且边权都是正的,所以两人只会相遇一次。如果在点上相遇,则两人到达该点的时刻为 l e n

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值