首先将坐标离散化,因为区间互不包含,可以理解为对于每个起点输出最少需要多少个战士. 将环倍长,破环成链,设$f[i]$表示区间左端点不超过$i$时右端点的最大值,可以通过$O(n)$递推求出. 那么如果将$f[i]$看成$i$的祖先的话,它实际上形成了一棵以$2n$为根的树. 首先暴力计算出1号点的答案$t$,设$L=t-1$. 然后dfs这棵树,用一个栈按深度依次保存每个点到根路径上的点. 对于一个点,只需要从$L$开始暴力枚举答案,然后$O(1)$检验即可. 因为每个点的答案相差不超过1,所…