25/10/2023 考试报告

发布时间 2023-10-26 09:40:29作者: Wzhone_启动

//考试时间分配及感想
感想?考的相思算吗

T1

link:没有link,但是可以描述一下题意

\(score: 0\) (非常骄傲)
\(time: 1h\)

题型及难点:lj组合数学毁我打卡题

简述一下题意还是没问题的。
给出一个\(n * m\) 的矩阵, 给出每行每列上的最大值,求在每个矩阵中每个格子上填上非负整数的方案数。

\(n , m\) 同阶 maxn = 2000$
//解题思路
考虑把问题拆开考虑。
首先我们发现将行列先排序, 我们可以发现这个其实是不影响正确答案的。
然后我们发现我们可以对于一段连续的\(x , y\)来考虑贡献,形如L形(可以自行画图)

然后我们来考虑贡献。 可以想到容斥原理。式子可以自己下来推。
由于有逆元,复杂度会带一个$ \log_{2}{MOD} $

T2

\[score : 50 \]

\[time : 1h \]

题型及难点:

题意描述:给出一个有向无环图, 你需要维护三个操作:

操作一:对于\(u\)能到达的所有点, 权值修改为\(v\)
操作二:对于\(u\)能到达的所有点, 权值修改为\(\min(v_p,v)\),其中\(v_p\)表示原来的权值
操作三:单点查询

数据范围: \(n <= 1e5\), \(n,q\)同阶。
//解题思路
考虑哪些东西会对结果产生影响。
不难发现,我们需要找到影响u的最后一个操作1和以后的操作2
考虑用bitset实现。实现过程其实还挺简单的。
考虑根号算法。我们用栈存储操作,当达到\(\sqrt n\) 时暴力清空栈即可。

bitset可以在\(n/w\)的时间内求出w后的第一个1,所以复杂度为
\(O(n^2 / w + n\sqrt n)\)

如果这道题卡空间,考虑用时间换空间。不难发现如果一次只执行
\(n/k\)次操作,时间复杂度会翻k倍, 而空间复杂度还降到1/k。

T3

\(score : 20\)
\(time : 2h\)

题型及难点:

给出序列,求冒泡排序需要几轮才能使序列不降。

序列会经历n次单点修改,每次修改后给出答案。

//解题思路

考虑用\(f(i)\)表示\(i\)前面大于他自己的数的数量,不难发现需要\(\max_{i = 1}^{i <= n}{f(i)}\)轮的冒泡排序。

树套树可以拿到70pts。

考虑 \(g(i) = i - f(i)\)
所以\(g(i)\)表示在\(i\)以前的小于等于\(a_i\)的数的数量。
我们发现我们只关心最大的\(f(i)\),所以我们修改\(g(i)\)的定义,使得最大的\(f(i)\)不受影响
而其他的\(f(i)\)关我p事
我们定义\(g(i)\)为全局小于等于自己的数的数量。这个可以用权值线段树维护。
时间复杂度\(O(n\log n)\)

T4咕了。