20210528模拟赛总结

越来越难了呜呜呜

T1

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

我们发现,既然 (f(f(x)) = -x) ,令 (y = f(x)) 可以发现一个环,即 (x ightarrow y ightarrow -x ightarrow -y ightarrow 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]] += sumlimits_{j=a[i]+1}^{n+1}f[i-1][j]) ,同理 (f[i][a[i-1]] += sumlimits_{j=0}^{a[i]-1}g[i-1][j])

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

T3

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

原文地址:https://www.cnblogs.com/nao-nao/p/14823421.html