2022.7.28 闲话

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨

我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨啊我好惨


好了不魔怔了,说一下老生常谈的区间覆盖 .

区间覆盖问题

\(n\) 个区间 \([l_i,r_i]\),问至少选多少区间可以覆盖 \([1,m]\) .

很多做法啊 .

Algorithm 1 对于每个区间从 \(l_i\)\(r_i+1\) 建一条长度为 \(1\) 的边,再向 \(i\)\(i-1\) 建一条长度为 \(0\) 的边,然后跑最短路,复杂度取决于最短路的复杂度 .

或者说我们注意到边权只有 0 和 1 可以直接 01BFS,\(O(n)\) .

Algorithm 2 扫一遍,令 \(L\) 为目前的左端点,\(R\) 记录目前能到达的最右 .

按左端点排序,扫到一个区间的 \([l,r]\) 时,只需找一个区间 \([l',r']\) 使得 \(l'<=l+1\)\(r'\) 尽量大,注意 \(L,R\) 单调不减,所以可以单调队列维护,\(O(n)\) .

Algorithm 3 到带 log 丢人算法了 .

\(dp_i\) 表示覆盖 \([1,i]\) 的答案,则枚举上一个区间选的位置可以得到:

\[dp_i=1+\min_{k\in[\operatorname{minl}(i),i)}\{dp_k\} \]

其中 \(\operatorname{minl}(i)\) 是以右端点为 \(i\) 的区间中左端点最小的 .

发现这个区间 min 可以线段树优化,于是就 \(O(n\log n)\) 了 .

似乎这个问题 ST 表也可以做,因为 ST 表末尾插元素复杂度大概是对的 .

总时间复杂度 \(O(n\log n)\) .


Cleaning Shifts

\(n\) 个区间 \([l_i,r_i]\),每个区间有一个价值 \(w_i\),选一些区间覆盖 \([1,m]\),使得价值和最大 .

用原来的 Algorithm 1Algorithm 3 照样能做,还是 \(O(n\log n)\) 的 .

Algorithm 2 大概不行 .

好水啊 .

但是闲话水点不也挺好吗 .

甚至这种闲话以后可能还会更新 。

yspm 速速冲 chess.com rank1 .

posted @ 2022-07-28 21:11  Jijidawang  阅读(104)  评论(8编辑  收藏  举报
😅​