path - sol

代价的形式中对最⼤值和最⼩值的要求⽐较难处理,⽆法记录到最短路中直接计算,但可以将最⼤最⼩边均改成任意,即等价于对于每条路径可以选⼀条边免费,选⼀条边计算两次,问最短路。

这样我们最优解⼀定是在某条路径上最⼤边免费,最⼩边计算两次,否则更劣。

那么这样就可以求分层图最短路了,改为求 的最短路。对于一条边 边权为 ,我们将 之间连接 的边;将 之间连接 的边;将 之间连接 的边。

设求出来的最短路为

此外还有一种只走一条边的情况没有考虑。我们只需要在最后输出的时候取 的最小值即可。

树 - sol

注意到 与运算 的一个性质:越 越小

考虑对于树上的任意一个节点 ,对与从它连出的一条树上路径 ,满足 ,由于最后是要求 劣于

也就是说,我们只需要考虑与某一点相连的点的贡献,即

对于每条边统计即可

sequence - sol

原式可化为

那么我们就能采用 “对撞”的方式,即:考虑每个 ,它对答案的贡献就是取模意义下与它相等的 的个数。

需要注意 需要是不同的元素。

average - sol

由于牛客公式里不知道为什么打不出 + 号,这里写了个- -1。

原 CF1003C 加强版

二分一个答案,假设当前二分出来的答案是 ,如果存在更优的解,那么必定存在一个区间 使得

我们把数列中的每一个数减去 ,然后判断是否存在一个长度符合条件的区间满足它的和大于

我们维护前缀和以及前缀和的后缀最大值,那么从左往右扫一遍就可以判断了。

什么是好的数组?- sol

易知 其中之一必须是整个数组里的最小值。

那么我们可以把 数组从小到大排序。

  1. 输出 Yes
  2. 否则,寻找和 互质的另一个最小的 ,如果不存在这样的 输出 Yes。否则,遍历数组,判断是否满足题目要求。

操作 - sol

模拟

lucky number -sol

数据较小,可以遍历。

快来帮芙芙吧 - sol

alt

BF *1 - sol

http://hwshqtb.wikidot.com/programing:bf1