2025.7.7 NOI 模拟赛 题解

比赛

T1 UOJ #983. 【UNR #9】星图

T2 UOJ #984. 【UNR #9】欢迎来到最前线

题意

给定 \(a_{1\sim n},b_{1\sim n}\),对于 \(1\le k\le n\),求出选出 \(k\)\((a_i,b_j)\)(其中 \(i\) 互不重复,\(j\) 互不重复),\(\sum |a_i-b_j|\) 的最小值,\(n\le5\times10^5\)

分析

显然可以费用流做到 \(O(n^3)\),说明结果为凸的

\(a\)\(b\) 并到一起后排序,显然最优情况下不存在 \(\textcolor{red}aba\textcolor{red}b\)(按值从小到大的顺序,其中同色互相匹配),且 \(\textcolor{red}aa\textcolor{red}bb\) 换为 \(\textcolor{red}aab\textcolor{red}b\) 不劣,且 \(\textcolor{red}ab\textcolor{red}b\) 换为 \(\textcolor{red}a\textcolor{red}bb\) 更优

可知最优情况下:在每对匹配的位置之间连边,则匹配之间要么相离要么相包含,且设 \((a_1,b_1)\supset(a_2,b_2)\supset\cdots\) 依次包含,则有 \([a_1\le b_1]=[a_2\le b_2]=\cdots\)\((a_1,b_1)\) 内的 \(a,b\) 一定都选了

\(a\)\(+1\)\(b\)\(-1\),按值大小做前缀和,则只有值相同的 \(a,b\) 之间可能匹配

在值相同的 \(a,b\) 之间连边,得到若干链,每条链上都是 \(a,b\) 交错,设有 \(t\) 个点,则相邻位置相减得到 \(t-1\) 个长度,总计 \(n-l\) 个长度(\(l\) 为链数量),从中选择 \(k=1\sim n\) 个,满足同一链中不能选择相邻的

每条链用分治加闵可夫斯基和求出选择 \(0\sim t-1\) 个的答案,然后并起来

容易做到 \(O(n\log n)\)

代码

参考

T3 UOJ #985. 【UNR #9】滑冰

比赛结果

\(30+56+12\)\(\text{rk}291\)

posted @ 2025-07-08 07:55  Hstry  阅读(77)  评论(0)    收藏  举报