码迷,mamicode.com
首页 > 其他好文 > 详细

USACO 2019 January Contest, Platinum

时间:2020-04-23 01:11:19      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:display   mat   队列   div   复杂度   sum   复杂   splay   下界   

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

USACO 2019 January Contest, Platinum

标签:display   mat   队列   div   复杂度   sum   复杂   splay   下界   

原文地址:https://www.cnblogs.com/iefnah06/p/12757824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!