CF1973
A
有 n 个人要下棋,每次下棋选择两个不同的人进行,结果任意。
若平局,两人各加 1 分,否则胜者加 2 分。
现在给出每个人的最终得分,判断是否有解,若有解最大化平局次数。
$n\le 10^5,p_i\le 10^9$
首先,注意到一次下棋会给总得分恰好贡献两分,故总和为奇数时无解。
总和为偶数时一定有解,简单构造每对奇数得分之间平局一次即可。
考虑最大化平局,即匹配数。
Conclusion:
若最大值大于其余数之和,则答案为其余数之和,否则等于所有数之和的一半。
Prove:
第一种情况显然,考虑第二种情况。
归纳证明:在 \(n=2\) 时显然成立。
否则考虑把最大值和次大值做一个匹配,使得剩下来的部分不超过剩下来部分的和,之后不再对二者做匹配,可视为是进行了合并,在 \(n-1\) 时成立,证毕。
B
称 $f(l,r)=a_l|a_{l+1}|\cdots|a_r$。
称数组是 k 合法的,当且仅当 $\forall (i,j),~f(i,i+k-1)=f(j,j+k-1)$。
求最小的合法的 k。
$n\le 10^5,a_i\le 10^9$
注意到合法具有单调性,因为 \(f(l,r)=f(l+1,r)|f(l,r-1)\)。
二分,双指针,对每一位记 1 的个数,把或的结果转化为加减来做即可。
C
对于一个序列,称一个位置 $i\in (1,n)$ 是合法的,当且仅当 $a_i>a_{i-1} \wedge a_i>a_{i+1}$。
给定长度为偶数的排列 p,构造一个排列 q,生成序列 $a_i=p_i+q_i$,最大化 a 中的合法位置个数。
输出一组 q 的构造方案。
$n\le 10^5$
偶数的条件让我们去想构造,上界显然是 \(\frac{n}{2}+1\)。
如何达到这一构造呢?考虑这么一种情况:
\(1,2,3,4,5,6\to 6,5,4,3,2,1\),此时 \(a_{i}=n+1\)。
如果想让一个位置变得更大,只需把该位置与 \(n-p_{i}+2\) 的值进行 swap。
这样每个选定位置都是 \(n+2\),别的位置都是 \(\leq n+1\)。
注意到,不能选定 1,所以跳过它,发现仍然可以达到上界。
题解给出了一种关于 n 的位置的做法,构造每个与 n 的位置同奇偶的位置选择,然后把较大的部分排序,较小的部分也排序,能求出两部分分别拥有下界和上界即可。
但是跟我的构造有不同的情况,所以在 n 是奇数的情况下,应该是无法通过构造得到答案的。
代码
D
交互题,给定常数 $n,k$,有一个未知的 a 数组。
令 $f(l,r)=(r-l+1)\times \max_{i=l}^r a_i$。
你要把序列分为恰好 k 段,使得每一段的 f 值都为 m,若存在这样的 m,找到最大的 m。
你可以询问 $l,x$,表示满足 $f(l,r)=x$ 的最小的 r,若不存在输出 $n+1$。
在 $2n$ 次询问内找到最大的 m,或输出 $-1$。
$k\le n\le 10^4,1\le a_i\le n$
思路解析
分析函数性质,有单调性,且与整体最大值有关。
弱化分析,假设已知原序列。
分析必要条件确定上界。
构造方案。
正解
询问非常强,由于 \(f(l,r)\) 显然具有区间单调性,所以每次询问实际上是在询问是否存在一组 \(f(l,r)=x\),并返回 \(r\)。
然而原问题更强,不妨假设已经知道 \(a\) 数组,并且支持 \(\mathcal O(1)\) 询问时怎么做(即变为非交互问题)。
分析函数性质,注意到整个序列的最大值必然会贡献,则 \(m\) 必然是最大值的倍数。
又注意到另一个必要的条件,每个区间的长度都不小于包含最大值区间的长度,故有不等式约束:\(\frac{m}{mx}\times k\leq n\),则 \(m\) 只有 \(\left\lfloor \frac{n}{k} \right\rfloor\) 种取值。
如果枚举可能的 m,由于支持 \(\mathcal O(1)\) 询问,容易在 k 次询问直接分段判断是否合法,这部分总询问次数 \(\leq n\)。
考虑只需用 n 次询问找到最大值,由于 a 的值域不大,所以只需询问 \(l=1,x=in\) 即可找到最大值。
E
给定一个排列,要把它排序。
称一组 $(l,r)$ 合法,当且仅当 $1\le l\le r\le 2n$,且任意交换 $x+y\in[l,r]$ 的位置,可以完成排列的排序。
求合法的 $(l,r)$ 对数。
$n\le 10^5$
思路解析
考虑这个交换操作的强度。
注意到一些简单的构造,与必要条件的转化。
正解
注意到交换操作,合法,当且仅当对于每个置换环,这个点集是连通的。
注意到合法显然有区间单调性,不妨从小的区间考虑。
\(l=r\) 过于弱了。
\(l=r-1\) 的情况下,比如 \(r=n+1\) 时,整个图是一个链。
(这个 trick 以前真见过)
所以想一下,发现对于不同置换环,分开考虑是没前途的。
也就是说,这里形如,当确定了一个 \(l\),然后钦定 \(r>l\) 的情况下,只需要交换的最大值和最小值可交换就合法。
那么显然对于某个位置来说,和 n 交换时最大,和 1 交换时最小。
于是考虑最小的 \(p_i\neq i\) 和最大的,称二者为 \(L,R\),则合法的必要条件是 \(l\leq L+n,r\geq R+1\)。
实际上,这个条件如果加上 \(l<r\) 就是充要的,因为可以构造一个前缀的链或者后缀的链。
所以统计就是简单的了,需要特判 \(l=r\) 的计数,以及原序列有序的情况。
当然,是可以 \(\mathcal O(1)\) 计算的,分讨即可。