【做题纪要】衡实初三模拟测试三

本来以为打完最多能拿\(120\)分所以没打,事实上自己做法能拿\(170\)分也就能到rk1,血亏

本次模拟赛不知道怎么拼出来的,一共4道题有3道题需要文件输出,最后出现了9道题的题解

都没写代码,凑合着看,思路肯定是能过的(吧?)

网格图

这个题一眼过去可以用暴力 bfs 来打,复杂度\(O(n^2k^2)\)可以得到 \(50\)

赛时有诡异优化可过,按照每个正方形连接的连通块个数去排序,不连通任何连通块的时候不进行查找,然后复杂度是玄学最劣能达到\(O(n^4)\),也就是点叉交错的情况,得分预估\(100\)pts,我和nishishui123都想到了这个做法但是我没打

然后仔细看一下发现可以用LCT维护,最开始预处理把所有空格子都link起来,在每次变化后都可以直接link再查询子树大小即可

复杂度\(O(n^2 k \log k)\),带个 $\log $ 而且 LCT 常数巨大所以(可能)过不去,但似乎数据比较水所以(好像)可过,我没打

最后是官方题解,先用并查集标出每个连通块的编号并求出连通块大小,然后在修改时查询一圈所对应连通块的大小取\(\max\),复杂度\(O(n^4)\)

发现每次修改都只会在两列内产生影响,因此可以将复杂度降低到\(O(n^3)\)

序列问题

暴力\(dp\),转移方程 \(f_i=\begin{cases}\max\{f_j+1\} & a_j<a_i且a_i−a_j<i−j \\ f_i & \text{others}\end{cases}\)

满足 \(a_j<a_i\) 且 $ a_i−a_j<i−j$ 一定会满足 \(j<i\)

所以直接按照 \(a_i\) 排序,求一个 \(i-a_i\)的最长上升子序列,所以优化成\(O(n \log n)\)

置换

这道题是NOI2016模拟赛的day1T3,一看就非常可做啊,似乎是全场最难题

我先挂个官方题解,但是似乎不是很能看懂

找个啥时候分析官方题解吧,但是现在我还没看懂

要想看懂官方题解,首先我们要知道置换是什么

一个有限集合 \(S\) 到自身的双射(即一一对应)称为 \(S\) 的一个置换。集合 \(S=\{a_1,a_2,\dots,a_n\}\) 上的置换可以表示为

\[f=\begin{pmatrix}a_1,a_2,\dots,a_n\\ a_{p_1},a_{p_2},\dots,a_{p_n} \end{pmatrix} \]

意为将 \(a_i\) 映射为 \(a_{p_i}\) ,其中 \(p_1,p_2,\dots,p_n\)\(1,2,\dots,n\) 的一个排列。

显然 \(S\) 上所有置换的数量为 \(n!\)

(来自\(\text{OI-wiki}\))

恒等置换也就是在进行置换后没有进行任何改变

首先我们先来分析 \(10\) 分做法

显然,一个置换的贡献是它的所有轮换的 \(\text{lcm}\) 的平方

经过大佬的讲解,大概看懂了

一个形如2 3 1 5 4的置换拆成2 3 15 4两个轮换后前者显然经过三次回到原位,后者显然经过两次轮换回到原味

那么这个置换经过 \(6\) 次回到原位,是两者的乘积

那么很明显,一个置换需要它所有轮换的 \(\text{lcm}\) 次才能回到原位,其贡献也就是所有轮换 \(\text{lcm}\) 的平方

只要分析出这点,\(30%\sim60%\)的第二种做法就很显然了,第一种我没看

同桌的你

基环树,我不会,但是本题公认比T3简单

posted @ 2024-03-27 09:32  Vsinger_洛天依  阅读(32)  评论(6编辑  收藏  举报