20210528模拟赛总结

越来越难了呜呜呜

T1

并不是很难,发现函数的定义域必须是对称的,又发现当 \(r\) 为奇数的时候难以构造出合法函数。现在我们只需要考虑对于 \(l+r=0,2\mid r\) 的状态就好了。

我们发现,既然 \(f(f(x)) = -x\) ,令 \(y = f(x)\) 可以发现一个环,即 \(x \rightarrow y \rightarrow -x \rightarrow -y \rightarrow x\)

所以,每两个元素可以构成两种合法的环,现在我们只需要考虑对于 \(n\) 个元素,分成 \(\frac{n}{2}\) 组,每组两个元素,可以划分多少种方案。容易发现答案是 \(\dfrac{n!}{\frac{n}{2}!}\)

T2

上午并不会怎么做……想法假了呜呜呜。

我们设 \(f[i][j]\) 为上升子序列以 i 结尾,同时下降子序列的结尾是元素 j 的时候的方案数, \(g[i][j]\) 为下降子序列为 i 结尾,上升子序列以元素 \(j\) 结尾的方案数。

如果有 \(a[i] > a[i-1]\) 的话,我们将上升子序列延长,直接就有 \(f[i][j] += f[i-1][j]\) 。同理,有 \(a[i] < a[i-1]\) 的时候,将下降子序列延长 \(g[i][j] += g[i-1][j]\)

考虑从 \(f\) 转移至 \(g\) 。我们有 \(g[i][a[i-1]] += \sum\limits_{j=a[i]+1}^{n+1}f[i-1][j]\) ,同理 \(f[i][a[i-1]] += \sum\limits_{j=0}^{a[i]-1}g[i-1][j]\)

然后使用线段树优化,需要单点加,全局清零,区间查询即可。

T3

写了个哈希拿了 20pts,完全看不懂呜呜呜

posted @ 2021-05-28 18:09  nao-nao  阅读(43)  评论(0编辑  收藏  举报