CodeForces 1166D Cute Sequences

题目链接:http://codeforces.com/problemset/problem/1166/D

题目大意

  给定序列的第一个元素 a 和最后一个元素 b 还有一个限制 m,请构造一个序列,序列的第 i 项 xi 满足 $x_i = \sum_{i = 1}^{i - 1} + r_i,1 \leq r_i \leq m$。

分析

  令 r i 分别全 1 和全 m,可以得到$2^{i - 2} * (a + 1) \leq x_i \leq 2^{i - 2} * (a + m), i \geq 2$。
  因此,如果以 b 为第 k 个元素能够构成一个序列,那么 b 一定满足$2^{k - 2} * (a + 1) \leq b \leq 2^{k - 2} * (a + m), k \geq 2$。
  反过来,如果存在 k 使 b 满足$2^{k - 2} * (a + 1) \leq b \leq 2^{k - 2} * (a + m), k \geq 2$,那么是否一定能构成一个序列呢?其实是可以的,证明如下:

$$
\begin{align*}
&∵\ x_i = (\sum_{j = 1}^{j - 1} x_j) + r_i,1 \leq r_i \leq m,i \geq 2 \\
&∵\ \sum_{j = 1}^{j - 1} x_j = 2 * x_{i - 1} - r_{i - 1} \\
&∴\ x_i = 2 * x_{i - 1} + r_i - r_{i - 1} \\
&∵\ x_2 = a + r_2 \\
&∴\ x_i = 2^{i - 2} * a + 2^{i - 3} * r_2 + 2^{i - 4} * r_3 +……+ 2 * r_{n - 2} + r_{n - 1} + r_n \\
&∴\ x_i = 2^{i - 2} * a + r_n + (\sum_{j = 0}^{i - 3} 2^j * r_{n - j - 1}) \\
\ &设 h = r_n,d_i = r_i - h,1 - m \leq d_i \leq m - 1,1 \leq h \leq m \\
&∴\ x_i = 2^{i - 2} * a + h + (\sum_{j = 0}^{i - 3} 2^j * (d_{n - j - 1} + h)) \\
&∴\ x_i = 2^{i - 2} * (a + h) + (\sum_{j = 0}^{i - 3} 2^j * d_{n - j - 1}) \\
\ &令 d_{n - j - 1} = 0,0 \leq j \leq i - 3 \\
&∴\ x_i = 2^{i - 2} * (a + h) \\
\end{align*}
$$

代码如下

猜你喜欢

转载自www.cnblogs.com/zaq19970105/p/10897793.html