DTOJ 4775. 旅行计划

题意

一张 n n n 个点 m m m 条边的无向图, 点从 1 1 1 n n n 编号, 每条边有权值 t [ i ] t[i] t[i]

q q q 组询问,每组询问形如 “ u   v   K u~v~K u v K”,表示询问从 u u u v v v 的所有路径中,权值和 m o d   K mod~K mod K 的最小值是多少。

Subtask1(13 points): K K K 均为奇数

Subtask2(23 points): n , m , q , K ≤ 300 n,m,q,K≤300 n,m,q,K300

Subtask3(29 points): t [ i ] t[i] t[i]均为 1 1 1 K K K 均为 2 2 2

Subtask4(35 points):无特殊限制

对于所有数据: 1 ≤ n , m , q ≤ 1 0 5 , 1 ≤ [ i ] ≤ 1 0 9 , 2 ≤ K ≤ 1 0 9 , u ≠ v 1≤n,m,q≤10^5 , 1\le[i]\le10^9,2≤K≤10^9,u≠v 1n,m,q105,1[i]109,2K109,u=v

题解

其实是很可做的一道题啊,测试的时候一看觉得不可做,想了想第一个子任务觉得很劝退,就放弃了。到最后才想了一下第三个子任务还写挂暴零了。。。

第一个子任务直接输出0,沿着任意一条路来回走k个单程即可(为什么完全没想到啊我是弱智)。

其实第三个子任务的方向就是正解了:首先这个子任务显然连通块内有奇环答案就是0,否则就是生成树上的路径长度%2。这提示我们是不是连通块内的每个环都有贡献:比较麻烦的是要走到这个环再走回来,于是不妨把往返同一条无向边也看作一个环,这样前面的过程也相当于经过了一个环,且次数是任意的。所以任何一个环的贡献就是把K和它的环长取gcd。这样,求出任意生成树上u到v的路径,这里还有一个小问题:可能跳过路径上一些点,但发现这其实相当于少了这些点的简单路径往返的环再加上一个新的环,于是直接把路径长度%取完gcd后的k即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值