题解 HYOI#8 每题得分%100相加(确信) version 1
HYOI #8 题解
定位是普及组偏下,偏套路,技巧较多。
segeasy
判断:\(\left\lceil\sqrt{l+k}\right\rceil\leq\left\lfloor\sqrt {r+k}\right\rfloor.\)
或者二分答案。
Bonus:最多能进行多少次操作?(这个题就是 seghard)
peachtree
\[\begin{aligned}
\text{原式}&=\sum\limits_{i=1}^p (p-i)a_i+\sum\limits_{i=p+1}^n(i-p)a_i\\
&=p\sum\limits_{i=1}^pa_i-\sum\limits_{i=1}^pia_i+\sum\limits_{i=p+1}^nia_i-p\sum\limits_{i=p+1}^na_i
\end{aligned}\]
于是可以预处理 \(s_i=\sum_{j=1}^ia_j\) 和 \(t_i=\sum_{j=1}^ija_j\),直接计算。\(p\notin[1,n]\) 也是类似的,总之就是把绝对值拆掉。
或者预处理 \(p=1,2,\cdots,n\) 的答案,对于没算过的加一下多余的贡献。
细节比较多,自己想想。
fromcp
将这个排列的反串接在排列前面,则新的序列的上升子序列个数除以二即为所求。这样每个方案都在两个转向的地方算了两次。
上升子序列个数:\(f_i=\sum_{j<i,a_j<a_i}f_j\),答案是 \(\sum_i f_i\)。
说一下模意义除以二是什么,这里直接说结论:\(499122177x\) 对着 \(998244353\) 取模就是 \(x/2\) 的结果。
Bonus:\(n\leq 10^5\)。
ecosystem
令 \(t=\sqrt k\),构造:
- \(t\) 个点连向点 \(p\),点 \(p\) 又连向 \(t\) 个另外的点。
- 令 \(l=k-t^2\)。点 \(q\) 连向 \(l\) 个另外的点。
最后随意地将两朵菊花的尾部连起来即可。
Bonus:不限制 \(m-n\) 的值,但是 \(k\leq 10^{18}\)。
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/solution-hyoir8-v1.html