2020-2021:teams:farmer_john:2sozx:codeforces_round_561_div._2
vp的时候cf又挂了
A
B
C
题意:给出一个序列 $a$ ,问有多少对 $i,j$ 满足以下条件 $\min(|a_i+a_j|,|a_i-a_j|)\le\min(|a_i|,|a_j|)\le\max(|a_i|,|a_j|)\le\max(|a_i+a_j|,|a_i-a_j|)$
$n\le 2\cdot10^5$
题解:显然可以将 $a$ 的所有数取绝对值,对答案显然没有影响。考虑 $i,j$ 对答案有贡献的条件。设$a_i\le a_j$ ,则条件可化为 $a_j-a_i\le a_i \le a_j \le a_i+a_j$ ,即 $2a_i\ge a_j$ 。将 $a$ 排序扫一遍即可。
D
题意:$q(q\le10^3)$ 个询问,每个询问给定 $a,b,m(a,b,m\le 10^14)$ ,问是否存在一个序列 $x$ 有 $x_1=a,x_n=b,x_i=x_1+\cdots+x_{i-1}+r_i,1\le r_i\le m$ 显然序列的长度不会超过 $50$。
题解:设长度为 $k$ ,我们可以简单的推出 $b=2^{k-2}a+\sum_{i=2}^{k-1}2^{k-i-1}r_i+r_k$,由于 $r_i\ge 1$ ,可以先将每个 $r_i$ 减去 $1$,最后再加上即可。对于每个长度贪心求解即可。
E
F
2020-2021/teams/farmer_john/2sozx/codeforces_round_561_div._2.txt · 最后更改: 2020/07/17 17:28 由 2sozx