2019牛客暑期多校训练营(第九场)
目录
Contest Info
[Practice Link](https://ac.nowcoder.com/acm/contest/889#question)
Solved | A | B | C | D | E | F | G | H | I | J |
---|---|---|---|---|---|---|---|---|---|---|
8/10 | Ø | O | O | O | O | - | - | O | Ø | O |
- O 在比赛中通过
- Ø 赛后通过
- ! 尝试了但是失败了
- - 没有尝试
Solutions
A. The power of Fibonacci
题意:
令\(F_i\)为斐波那契数列第\(i\)项,计算\(\sum\limits_{i = 1}^n F_i^m\)
B. Quadratic equation
题意:
\(p = 10^9 + 7\),然后给出两个式子:
\[\begin{eqnarray*}
(x + y) &\equiv& b \bmod p \\
(x \times y) &\equiv& c \bmod p
\end{eqnarray*}
\]
要求找到一组\((x, y)\)的解,并且使得\(x \leq y\)。
思路:
注意到如果我们知道\(x - y\)的结果,那么就可以代入求解。
并且有:
\[\begin{eqnarray*}
(x - y)^2 &=& x^2 + y^2 - 4xy \\
&=& (x + y)^2 - 4xy \\
&\equiv& b^2 - 4c \bmod p
\end{eqnarray*}
\]
二次剩余求解即可。
C. Inversions of all permutations
题意:
给出一个序列\(a_i\),令\(\{r_i\}\)表示该序列的第\(i\)个排列,令\(t\{r_i\}\)表示该序列第\(i\)个排列的逆序对个数。
计算:
\[\begin{eqnarray*}
\sum\limits_{\{r_i\} is\;a\;permutation\;of \{a_i\} } b^{t\{r_i\}}
\end{eqnarray*}
\]
思路:
D. Knapsack Cryptosystem
折半搜索。
E. All men are brothers
H. Cutting Bamboos
题意:
有\(n\)根竹子,每次有一个操作\((l, r, x, y)\),表示要在\([l, r]\)范围内的竹子,切\(y\)刀,每一道切到的竹子高度和要相同,问第\(x\)刀切在的高度是多少?
思路:
二分高度,主席树查询这个高度以上的高度和是否等于前\(x\)刀切去的总量
I. KM and M
题意:
计算:
\[\begin{eqnarray*}
\sum\limits_{k = 1}^N ((kM) \& M) \bmod (10^9 + 7)
\end{eqnarray*}
\]
思路:
按位考虑,只需要考虑\(M\)的二进制位为\(1\)的那些位。
并且考虑\(KM\)其实是一个等差数列,首项为\(0\),公差为\(M\)。
那么现在要计算\(KM\)这个等差数列在第\(i\)位上的\(1\)的和,怎么计算?
\[\begin{eqnarray*}
\sum\limits_{k = 0}^n (\left\lfloor \frac{kM}{2^i} \right\rfloor \bmod 2) \\
\leftrightarrow \sum\limits_{k = 0}^n \left\lfloor \frac{kM}{2^i} \right\rfloor - 2\left\lfloor \frac{kM}{2^{i + 1}} \right\rfloor
\end{eqnarray*}
\]
式子的转化可以想象位运算,先右移再左移。
然后就是类欧。
J. Symmetrical Painting
题意:
在二维平面上,有\(n\)个矩形,第\(i\)个矩形的左下角是\((i - 1, L_i)\),右上角是\((i, R_i)\)。
你想把一些矩形区域删掉,使得剩下的部分有一个水平的对称轴,使得剩下的面积尽量大。
思路:
大力猜测对称轴肯定是\((L_i + R_i) / 2\),枚举即可。