不知道会不会有方法论,先咕了。
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\) 的位置找一个数调整成同余,最后整体减即可。
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\),因此构造是可行的。
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\),这是满足条件的。
这个近似属实有点逆天了。
IMO2022T6 上山岗
by_chance:这题当时中国队六个人全过了,应该不是很难吧!
首先我们考虑如何计算这个上坡路径方案数。考虑将所有数从小到大插入,走到这个点的方案数就是相邻的比其先插入的点的方案数之和。特别的,如果这个点是山谷那么本身自带一个。
那么一个下界是 \(1+2n(n-1)\),其中 \(1\) 是山谷数的下界,\(2n(n-1)\) 是考虑方格图上每个边,其至少转移了一种方案。
有点逆天的是,这个下界是可以取到的!
要取到这个下界,首先需要只有一个山谷,也即 \(1\)。另外,一个点需要要么是局部最大值,要么比周围三个大比另一个小。这相当于,我们要在网格图上选一个树,满足不在树上的点都是单点,这样我们可以随便定一个树上的点为 \(1\),然后 dfs 从 \(2\) 开始放,最后不在树上的点任意放即可。
增量构造一下,可以构造出来图长这样:
\(n\bmod 6=4\) 的情况需要往下和往右平移一下。
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)\)。
CF1882E Two Permutations
一个提示是考虑 SPJ 如何做到 \(O(n)\)。
考虑在开头新增一个 \(0\) 表示开头,并且将整个排列连成一个圆排列,则假设我们选择了 \(x\),原序列是 \(0AxB\),交换后变成 \(0BxA\)。因为是圆排列,所以这相当于 \(xA0B\),所以这个操作相当于交换了 \(0\) 和 \(x\)。
枚举 \(0\) 最终在哪,则最终序列确定。每个点有一个 \(p_i\) 表示其在最终序列中需要到的位置。这些 \(p_i\) 会形成若干个环。自环不用管,包含 \(0\) 的环需要环长 \(-1\) 步复位,否则需要环长 \(+1\) 步复位。
两个排列只需要分别对奇数和偶数计算最小答案即可。时间复杂度 \(O(n^2)\)。
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\)。
标签:10,题选,frac,submission,可以,构造,chance,考虑 From: https://www.cnblogs.com/275307894a/p/18165760