首页 > 其他分享 >CF1735E题解

CF1735E题解

时间:2022-11-11 20:35:31浏览次数:52  
标签:连边 匹配 题解 复杂度 CF1735E mathcal 贪心

钦定 \(p_1=0,p_2>0\),不难证明如果有解则一定存在 \(p_2>p_1\) 的解。考虑枚举和 \(d_{1,1}\) 是相同楼房,则 \(p_2\) 对于每一种情况有两种可能的位置:\(d_{1,1}+d_{2,i}\) 和 \(|d_{1,1}-d_{2,i}|\)。考虑判断这 \(2n\) 种可能的方案是否合法。
对于 \(d_{1,i}\) 和 \(d_{2,j}\) 它们是同一个楼房当且仅当 \(d_{1,i}+d_{2,j}=p_2\) 或 \(|d_{1,i}-d_{2,j}|=p_2\),于是想到对于可能匹配的 \((i,j)\) 连边,这样连出一个二分图,原题转化为求这个二分图的完美匹配。由于对于一条边 \((i,j)\) 只有两个合法的 \(p_2\),因此总边数为 \(\mathcal{O}(n^2)\),用 Dinic 跑最大匹配,则总复杂度为 \(\mathcal{O}(n^2\sqrt{n})\),足以解决此题。
但这题有更优秀的做法。
将 \(d_1\) 和 \(d_2\) 排序后,把相同的缩在一起,然后跑多重匹配,每个点要匹配的边数为缩在一起的点的个数。这时一个左部点 \(d_{1,i}\) 最多连两条边 \(|p_2-d_{1,i}|\) 和 \(p_2+d_{1,i}\),则这个图仅由链和环构成,排好序由于左边先减后增,右边单增,这个图不可能含有环,只能由若干条链构成,于是我们在每条链上贪心地匹配。
从链的一端开始,对于每个左部点都贪心地往前面匹配(即已经匹配好了的方向),为后面的点留下更多的位置,不难证明这样贪心一定是正确的。
连边的过程中通过上述的两个单调性,使用双指针也可以做到线性,因此总复杂度为 \(\mathcal{O}(n^2)\)。

标签:连边,匹配,题解,复杂度,CF1735E,mathcal,贪心
From: https://www.cnblogs.com/cooltyl/p/16881777.html

相关文章

  • P3188 [HNOI2007]梦幻岛宝珠 题解
    一道不错的dp题,下令原背包容量为\(m\)。注意到\(w_i=a\times2^b\)中\(a,b\)都比较小,尝试按照\(a\)或者\(b\)分组然后合并,但是显然如果我们按照\(a\)分组就......
  • 汉诺塔问题及其变种问题解法(cpp版本)
    普通汉诺塔问题1.问题描述有三个柱子A、B、C,A柱子上有n个圆盘,圆盘的大小不等,大圆盘的在下,小圆盘的在上。将A柱子上的圆盘全部移动到C柱子上。每次只能移动一个圆盘,而且......
  • 【题解】P2260 [清华集训2012]模积和(数学,整除分块)
    【题解】P2260[清华集训2012]模积和比较简单的一道推式子的题。(清华集训居然会出这种水题的吗)题目链接P2260[清华集训2012]模积和题意概述求\[\sum_{i=1}^{n}\sum......
  • 【题解】CF1485C Floor and Mod(二分答案,整除分块)
    【题解】CF1485CFloorandModemmm……NOIP考前两周,跟CSP考前一样(虽然最后并没有去考),写篇题解增加以下RP(雾)。提供一篇思路大体和题解区相同但用了二分写法的题解。......
  • P2254 [NOI2005] 瑰丽华尔兹 题解
    注意到可以设朴素转移方程\(f_{t,i,j}\)表示\(t\)时刻钢琴在\((i,j)\)时的最长滑动距离,这样复杂度是\(O(nmt)\)的,过不去。不过听说加点奇怪的优化能过?考虑一段时......
  • MySQL慢查询(下):问题解决,应用总结
    上篇回顾继上两篇:​​MySQL慢查询(上):你知道为啥会慢么?​​​​MySQL慢查询(中):正确的处理姿势,你get到了吗?​​在以上两篇内容中,我们一起探索了这些内容:SQL执行过程查询SQL为什......
  • 「题解」Codeforces 1098D Eels
    暴力是,每次挑出最小的两个合并。需要观察到没有产生贡献的次数很小。考虑最小的那个数的大小,如果一次合并没有产生贡献,那么最小的数至少\(\times2\).所以最多会有\(\mat......
  • [题解] [CSP-J 2022] 逻辑表达式 思路整理
    标签:分治。题目传送门:P8815[CSP-J2022]逻辑表达式题目大意给一个包含0、1、|、&、(、)的逻辑表达式(保证正确)。在计算表达式时采用“短路”策略:计算表达式a&b......
  • vs 加入目录下的文件不在解决方案窗口显示(我的是unreal,其他的也成立),必须手动加的问
    1、网上说的显示全部然后把非活动的包含,我的可能是项目太大,不行;2、使用一个foldertosolutionfolder插件,也不行,这个会将子文件夹单独生成一个项目;最后方案:删除*.sln文件,......
  • 题解 P4778【Counting swaps】
    problem一次操作指随意选定\(x,y\)并交换\(a_x,a_y\),请问有多少种方案,能用最少的操作次数重排一个排列\(a\)?\(n\leq10^5,P=10^9+7\)。solution0连边\(i\toa_i\)......