iefnah06

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Redistricting

\[P_i = \sum_{j=1}^{i}[S_i=\texttt{H}]-[S_i=\texttt{G}] \]

\(F_i\) 为考虑了 \([1,i]\) 这个前缀的最优解,那么

\[F_i = \min_{i-K+1<j<i} F_j + [P_i \le P_j] \]

考虑一个候选的转移 \(F_k\),在 \(F_k\) 相同时一定是 \(P_k\) 越小越好,而 \(F_{k_1}<F_{k_2}\)\(k_1\) 不会比 \(k_2\) 劣(最多加一)。

可以把 \((F_k,P_k)\) 放进单调队列里转移,复杂度 \(O(N)\)

如果没观察到这个性质的话大概也可以在线段树上放单调队列,但是直接写 std::deque 的空间消耗可能有点离谱?

https://ideone.com/nOJmA0

Exercise Route

考虑选两条非树边,存在一种选环的方案当且仅当这两条非树边的两个端点对应的树上路径有交。

然后就是统计存在交(至少一条边)的树上路径条数了,可以利用路径交是树,且树满足 \(|E|=|V|-1\) 的性质统计。

https://ideone.com/wbRzKW

Train Tracking 2

用输入的限制算出每个位置的下界,那么一个最小值为 \(x\) 的限制只有可能在区间内下界为 \(x\) 的位置取到。

对于每个 \(x\) 把对应的限制区间和位置拿出来 DP。

https://ideone.com/5Nu2j2

posted on 2020-04-22 23:46  iefnah06  阅读(163)  评论(0)    收藏  举报