首页 > 其他分享 >CF1768C 题解

CF1768C 题解

时间:2023-01-24 20:24:53浏览次数:56  
标签:le 题解 CF1768C 枚举 序列 有解 用过

\(\mathcal Solution\)

【题意】

题目要你构造两个序列 \(p, q\),满足 \(\max\{p_i, q_i\}=a_i\)。

【分析】

如果满足 \(\max\{p_i, q_i\}=a_i\),则满足 \(p_i=a_i, q_i\le a_i\) 或者 \(q_i=a_i, p_i\le q_i\)。

引理 \(1\):如果有解,那么 \(p_i = a_i\) 还是 \(q_i = a_i\) 都是有解的。

证明:

因为有解,所以对于 \(\forall i(1\le i\le n)\) 都满足 \(p_i=a_i\) 或者 \(q_i=a_i\)。

如果 \(p_i = a_i\) 有解,则我们对于 \(\forall i (1\le i\le n)\) 进行 \(\operatorname{swap}(p_i, q_i)\),也一定有解,这种情况就是 \(q_i=a_i\),\(\operatorname{swap}(p_i, q_i)\) 就是交换两个数。

然后我们根据性质 \(1\),枚举每个数 \(a_i\),然后判断 \(p_i\) 序列中是否存在 \(a_i\),不存在,则把 \(a_i\) 加入序列 \(p\) 中,否则,如果 \(q\) 序列中出现了 \(a_i\),则无解,否则将 \(a_i\) 加入序列 \(q\) 中。

接着我们看如何填入其他数。

我们贪心的考虑,一定是选能选的数最大的那个。

然而直接暴力枚举是 \(\mathcal O(n^2)\),会 TLE,我们考虑优化。

我们是否能枚举小于一次就找到没有用过的最大值。

这个可以用并查集来维护,即一个数变成用过,判断其左边和右边是否为用过,如果用过,则合并成一个集合,然后维护每一个集合中的左端点。

那么找最大值就等价于找 \(a_i\) 所在的集合的左端点减 \(1\),还要特判 \(a_i\) 没用过的情况。

具体实现见代码

标签:le,题解,CF1768C,枚举,序列,有解,用过
From: https://www.cnblogs.com/hcywoi/p/17066329.html

相关文章

  • CF1768D 题解
    \(\mathcalSolution\)【题意】我们可以交换任意两个数,求最小操作几次能让逆序对变成\(1\)。【分析】如果逆序对为\(1\)的排列一定是:\(2,1,\cdotsn\)\(1,3,......
  • ABC281E 题解
    \(\mathcalSolution\)本题的思路类似于对顶堆。用两个multiset来维护。\(S_1\)为第一个multiset;\(S_2\)为第二个multiset。\(S_1\)维护前\(K\)个值,\(S_2\)......
  • AT_abc277_e 题解
    \(\mathcalSolution\)【题意】给定无向图,当\(a_i=1\)时,该条边才能走。在给我们\(k\)个点,\(S_1,S_2,\cdots,S_k\),到了这些点可以选择是否取反\((1\to0,0\t......
  • 2023牛客寒假算法基础集训营1 个人题解(ACDHKL)
    A.WorldFinal?WorldCup!(I)题意:给10场比赛的点球输赢情况,奇数为A队点球,偶数为B队点球思路:用两个变量x,y来分别存A队当前赢的场次和B队当前赢的场次然后就就扫......
  • CodeForces-907#B 题解
    正文设数组\(c_{x,y,i,j}\)代表\((x,y)\)位置的大格子中\((i,j)\)位置的小格子。很显然,输入中字符的输入顺序是要调整的,实际的顺序是\(x,i,y,j\)。对于输入的\(......
  • 题解
    前言只对SubTask2的选手看过来!!!很好的一道模拟题。坑点分析题目里说的很明白了:只要有\(\ge1\)个带有注释的,就是一定是祖宗人,哪怕在后面或者前面出现过符合乐子人......
  • P3802 小魔女帕琪 题解【期望dp】
    题目传送门P3802解题思路本题的解题思路关键在于分段。每一个结构段的概率在之后的结构段依然适用。判断是否符合这种特性最好方法是随机截取一段观察是否成立发现成......
  • 洛谷P3654 First Step题解
    这是一道暴力枚举。 大致题意:R行C列的棋盘要放下长度为K的线段,“#”表示无法放置,问有多少种放置方法。直接贴代码:#include<bits/stdc++.h>usingnamespacestd;i......
  • P4022 [CTSC2012]熟悉的文章 题解
    题目链接简要题意给定\(m\)个模板串和\(n\)个匹配串,如果一个字符串是一个模板串的子串且长度不小于\(L\)则称其为“熟悉的”,对于每个匹配串,求一个最大的\(L\),满足......
  • 程序员经典问题解答
    帮助在学习、上班的过程中,你是否经常遇到疑难问题无法解决,为此备受折磨?别担心,小编精选多道程序员最头痛的技术问题予以回答。QA小伙伴程序大牛C语言 Q:如何引用一个已经定义......