T1

  • 20 pts: 对每组询问,暴力枚举所有区间,计算区间 gcd 的值即可。复杂度
  • 50 pts: 对每组查询,用 ST 表求区间 gcd,枚举左端点,二分右端点即可。复杂度
  • 80 pts: 考虑到数据随机的性质,根据质数的密度,gcd = 1 的区间长度上界是 级别的。那我们可以对每个左端点 ,维护最小的右端点 ,使得 ,然后增量更新答案,复杂度
  • 100 pts: 记录 为区间 gcd 为 k 的倍数的区间,有多少个。那么根据 来计算答案。对每个 我们用 set 维护极长的,所有元素都是 的倍数的区间。复杂度为

T2

考虑动态规划的做法,我们用 表示目标分数为 ,当前轮得分为 的局面,最优策略需要几个回合(当前回合需要被计算在内)

先考虑一些特殊的状态

  • ,此时无需进行游戏,已经完成目标。
  • 时,,此时,结束当前回合就拿下了,继续投掷显然不优,所以需要一个回合。

接下来考虑 的递推。

  • , ,... 求好了,考虑怎么求

决策有两种,

  • 决策 1,放弃投掷:
  • 决策 2,继续投掷:

这个递推的转移在 没有拓扑序,因为决策 2 等式右边依赖了 的值。

我们观察到 的值和等式左边 的值是有单调性的。

那么二分等式右边的 ,如果二分到

  • 根据递推 ,依次求解
  • 比较 的大小关系。

用后缀和优化 DP 转移,复杂度为

T3

  • 我们可以观察到任意两个人的路径是不相交的,否则严格不优,因此每条边是“一方通行”的
  • 考虑一棵树的情况。记 ,那么最小的搬运距离为
  • 对于基环树的情况,我们考虑在环上任取一条边 ,枚举从 经过的人次 ,如果 则表示有 人从 走到了
  • 断开 后,我们得到一棵树,以 为根,发现 路径上的点 值的中位数是最优的。

T4

不妨在 1 号点也放个任务 ,我们求出 两两之间的距离,记录

即从任务 , 到 ,到 ..... 到 的最短距离之和。

注意到,两人做任务一定是交替的区间,例如

  • Alice 完成 1,2,3
  • Bob 完成 4,5,6
  • Alice 完成 7,8,
  • Bob 完成 9

表示任务 被 Alice 完成了,Bob 上一个完成的任务是 ,且完成 到现在已经过去了 的时间。

我们枚举 Alice 接下来完成的任务 。直到第 个任务交给 Bob。转移分为两种。

  • 如果 那么 Bob 到达 后,Alice 还没有没来,那 Bob 只能等着。
  • 否则 Alice 可以在 Bob 到达 的时间离开

复杂度为