Codeforces Round #775 (Div. 2)

A

因为只能跳一次,所以从最前的岸跳到最后的岸就好了。

代码

B

发现球的个数其实是取决于传球总次数和传球次数最多的那个人,如果最多的那个人次数超过了总次数,那么这个人拿到球就要扔掉。

那么此时答案就是 \((a_i)_{max}+(a_i)_{max}-sum\)

如果没有超过,那么只需要 1 个球就够了。

代码

C

要求的是 $\displaystyle \sum_{i=1}^{n} \sum_{j=i+1}^{m} \mid r_i-r_j \mid + \mid c_i-c_j \ \mid $。

不难发现可以将行和列分开处理,计算贡献。

将每个颜色对应的行号求出来,排序一下,每个元素对应的贡献就是 \(col_i \times (2 \times i -cnt+1)\)\(cnt\) 表示该颜色的个数。

代码

D

注意到对于每个 \(x\),得到的 \(\lfloor \dfrac{a_i}{y} \rfloor\) 的数量是不超过 \(\lfloor \dfrac{c}{x} \rfloor\) 的,这启示我们去枚举 \(x\)\(y=\lfloor \dfrac{a_i}{x} \rfloor\),然后判断 \([x \times y,x \times y + x - 1]\) 中是否有数没有出现,前缀和统计一下就好了。

代码

E

考虑树状数组维护前 \(i\) 个数字有多少个,若确定了 \([1,t_i-1]\) 后面 \(n-i\) 位方案就是可重集排列 \(\dfrac{(n-i)!}{\prod_i (cnt_i!)}\)

如果取 \(t_i\),看下一位,树状数组把 \(t_i\) 位个数减去 1,分母要乘上 \(cnt_{t_i}\)

代码

posted @ 2022-03-11 18:28  Nylch  阅读(37)  评论(0编辑  收藏  举报