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,完全看不懂呜呜呜