把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

构造题选讲 by_chance

不知道会不会有方法论,先咕了。

upd:有的捏,但是好像没啥用/qd

ARC145D Non Arithmetic Progression Set

首先考虑如何构造 \(n\) 个数满足不存在 \(2y=x+z\)

考虑一个分治:将值域均匀分成三部分,并且让所有数平分在第一部分和第三部分,直至为 \(1\) 就可以在值域内选一个位置扔进去。

这个合法的原因是因为,考虑三个数被分开的时候,肯定是其中两个在其中一部分,另一个在另外一部分。在同一部分的两个的差小于值域 \(\frac{1}{3}\),并且和另一个的差大于 \(\frac{1}{3}\),因此不存在 \(2y=x+z\)

另一个本质相同的构造方法是选择所有在三进制下只有 \(0\)\(2\) 的数。

上面这个东西的值域不会超过 \(4\times 10^6\),可以接受。

然后考虑满足 \(m\) 的限制。一个可以观察到的事情是将整体加上一个数是不改变条件的,因此我们只需要在两边留 \(10^6\) 的余量,然后满足总和和 \(m\)\(\bmod n\) 意义下同余即可。

用上面的方法构造 \(n-1\) 个数,放在 \([1\times 10^6,5\times 10^6]\) 区间,然后再在 \(\leq -5\times 10^6\) 的位置找一个数调整成同余,最后整体减即可。

submission

LG P10311 「Cfz Round 2」Weighted Mean

唐完了给我(

假设能枚举这个最终的值,记作 \(w\),那么移项发现,我们需要做的就是让 \(\sum\limits_{i} (a_i-w)b_i=0\)

我们直接让 \(w\) 取中位数,若 \(n\) 是奇数,则可以直接取中位数,然后让 \(i\)\(n-i+1\) 抵消。因为这样 \(b\) 可以划分成两个上升序列,所以只会有两个位置相同。

如果 \(n\) 是偶数并且两个中位数并不是挨着的,那么仍然可以按照上面的方法构造。

否则,\(n=2\) 无解。不妨设 \(2a_{\frac{n}{2}}\leq m\),如果不满足可以将 \(a\) 值域 reverse 一下。

先不管 \(a_{\frac{n}{2}+1}\) 的,先把 \(2\leq i\leq \frac{n}{2}-1\)\(i\)\(n-i+1\) 按照上面的方法配对掉。然后剩下 \(1,\frac{n}{2}+1,n\)

我们让 \(b_1=a_n-a_{\frac{n}{2}}+2\)\(b_{\frac{n}{2}+1}=2b_n=2(a_{\frac{n}{2}}-a_1)\),满足了和为 \(0\) 的限制。

\(b\) 仍然是两个上升的子序列,并且前面的假设确保了 \(2(a_{\frac{n}{2}}-a_1)\leq m\),因此构造是可行的。

submission

ARC172D Distance Ranking

哥们,这种题怎么想到的?

我们希望可以对边长有足够大的区分度。直接给构造:

\(A_{i,i}=10^8\)\(A_{i,j}(i<j)\)\(i\)\(j\) 的距离从大到小的排名。

这个东西的正确性在于,\(i\)\(j\) 的距离的形式是 \(L^2+(L-rk_{i,j})^2\) 再加上一堆小量。小量可以不管,\((L-rk_{i,j})^2=L^2-2rk_{i,j}L+rk_{i,j}^2\)\(rk_{i,j}^2\) 也是一个小量可以扔了,因此 \(i\)\(j\) 距离可以看成 \(-2rk_{i,j}L\),这是满足条件的。

这个近似属实有点逆天了。

submission

IMO2022T6 上山岗

by_chance:这题当时中国队六个人全过了,应该不是很难吧!

首先我们考虑如何计算这个上坡路径方案数。考虑将所有数从小到大插入,走到这个点的方案数就是相邻的比其先插入的点的方案数之和。特别的,如果这个点是山谷那么本身自带一个。

那么一个下界是 \(1+2n(n-1)\),其中 \(1\) 是山谷数的下界,\(2n(n-1)\) 是考虑方格图上每个边,其至少转移了一种方案。

有点逆天的是,这个下界是可以取到的!

要取到这个下界,首先需要只有一个山谷,也即 \(1\)。另外,一个点需要要么是局部最大值,要么比周围三个大比另一个小。这相当于,我们要在网格图上选一个树,满足不在树上的点都是单点,这样我们可以随便定一个树上的点为 \(1\),然后 dfs 从 \(2\) 开始放,最后不在树上的点任意放即可。

增量构造一下,可以构造出来图长这样:

截图 2024-04-29 15-08-21

\(n\bmod 6=4\) 的情况需要往下和往右平移一下。

submission

LG P7921 [Kubic] Division

首先我们考虑倒着做。初始的时候有一堆数满足 \(\max<2\min\),然后你要每次合并两个数,仍然要满足上述条件,最后要求合并成 \(n\)

一个简单的贪心是每次合并最小值和次小值,但是仔细思考一下,17 25 29 32 32 32 32 上会寄。

但是实际上在这个题不会寄,因为可以存在一种最优策略,满足真的每次合并最小值和次小值就行的。考虑如果有一次没有合并最小值 \(x\) 和次小值 \(y\),而是合并了更大的 \(z\),则要满足 \(x+z<2y\)。这时我们在分裂 \(x+z\) 的时候不妨分裂成 \(y\)\(x+z-y\),这样合并最小值和次小值就可以了。

现在我们考虑一下每次合并最小值和次小值,这个序列要满足什么性质。首先肯定不能有连续的四个相同的数,其次如果有三个相同的数,则比这个数小的数的个数要为奇数。同时我们发现合并完一轮后所有的数都互不相同的,因此只要能合并完一轮,剩下的就可以继续合并下去。所以上面的条件就是充要条件了。

因为 \(3\) 要求前面有奇数个,也就是说前面至少要有一个数只选了一次,则我们将 \(1,3\) 替换成 \(2,2\) 会让总和更小,因此 \(3\) 只能拿来调整总和,而不能拿来增加个数。

枚举一个 \(x\),假设当前值域是 \([x,2x-1]\)。从小到大填直到填不下去为止,这时 \(n<2x-1\)。如果剩下 \(\geq 2\) 个空位,则将前面的调整到空位上就可以将 \(n\) 调整掉。如果剩下一个空位,则至多只能调整 \(x-1\) 个,也即剩下的 \(n\) 要求 \(\leq x-1\)。如果没有剩下空位,那么至多只能让 \(x\) 选一个,让 \(2x-1\) 选三个,这样能增加 \(x-1\),而中间数显然都是可以构造到的。

又因为 \(x\) 越小,能构造的个数越多,所以只需要找到第一个 \(x\) 满足可以构造出 \(n\) 即可。时间复杂度 \(O(\sqrt n)\)

submission

CF1882E Two Permutations

一个提示是考虑 SPJ 如何做到 \(O(n)\)

考虑在开头新增一个 \(0\) 表示开头,并且将整个排列连成一个圆排列,则假设我们选择了 \(x\),原序列是 \(0AxB\),交换后变成 \(0BxA\)。因为是圆排列,所以这相当于 \(xA0B\),所以这个操作相当于交换了 \(0\)\(x\)

枚举 \(0\) 最终在哪,则最终序列确定。每个点有一个 \(p_i\) 表示其在最终序列中需要到的位置。这些 \(p_i\) 会形成若干个环。自环不用管,包含 \(0\) 的环需要环长 \(-1\) 步复位,否则需要环长 \(+1\) 步复位。

两个排列只需要分别对奇数和偶数计算最小答案即可。时间复杂度 \(O(n^2)\)

submission

LG P8477 「GLR-R3」春分

首先我们可以发现这个东西至少可以做到线性:给每个溶液配一块板,这些板的反面都不用,这样就可以做到 \(2n\) 步了。

板的反面不用很浪费。我们考虑将左边的板重复利用一下:给右边的溶液每个溶液配一块板,左边的溶液用 \(\frac{n}{2}\) 块板,先将前 \(\frac{n}{2}\) 种溶液一个配一块板,后 \(\frac{n}{2}\) 种溶液用前面板的反面,这样就可以做到 \(1.5n\) 块板。

这样还可以分三组,这样可以做到 \(\frac{4}{3}n\) 块板,但是过程略有点逆天了。

我们考虑现在制约我们减少板数的地方在哪里:在我们使用左边后 \(\frac{n}{2}\) 溶液的时候,前 \(\frac{n}{2}\) 溶液把右边的板的另一面污染了,使其不能重复利用。

但是我们可以在中间再加一块板,让左边无法污染右边啊!

对左边还是分两组,让一组用一面,右边分三组,并且配 \(\frac{2}{3}n\) 个板。设左边两组为 \(A_1,A_2\),右边为 \(B_1,B_2,B_3\),右边两组板为 \(C_1,C_2\)

分以下六步:

  • \(A_1,B_1,C_1\)
  • \(A_1,B_2,C_2\)
  • \(A_1,B_3,-C_1\)
  • \(A_2,B_2,C_2\),这里中间板要换个面避免污染 \(C_2\) 干净的一面。
  • \(A_2,B_3,-C_1\)
  • \(A_2,B_1,-C_2\)

然后就是 \(\frac{n}{3}+1+\lceil\frac{n}{2}\rceil\),刚刚好是 \(609\)

submission

posted @ 2024-04-29 15:12  275307894a  阅读(57)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end