首页 > 其他 > 详细

Codeforces Round #690 (Div. 3) 简要题解

时间:2021-01-25 23:39:12      阅读:25      评论:0      收藏:0      [点我收藏+]

A

直接倒推回去即可,左边右边依次向中间扫,依次扫到的就是原序列。

Code

用时:3min

B

看最前面能连"2020"的前面多少,最后面能连"2020"的后边多少,如果相加大于4即为答案。

Code

用时:4min

C

最优操作为从9到1依次使用。模拟即可。

Code

用时:3min

D

答案实际上是求划分成若干段,这些段的和都一一相等,且分段最多。

那么他们最后那一位的前缀和一定是个等差数列,枚举第一段的最后一位即可。

时间复杂度 \(\mathcal{O}(n^2)\)

反思:没有一眼秒掉,而是先去想 \(\mathcal{O}(n^3)\) 的区间dp,存在一定程度上的思维定式。

Code

用时:6min

E1

枚举 \(a_i\)\((a_j,a_k)\) 只有几种可能的取值,记录每个取值有多少个数,大力分类讨论全部方案算在一起,最后总和除以\(3\)即可。

Code

反思:简单组合数学计算上存在严重的漏洞,分类讨论能力不够强,统计答案有处没有开ll用了7min才发现。

用时:36min

E2

对于一个 \(a_i\) 当最大值来说,只有值在 \([\max(0,a_i-k),a_i]\) 之间的数才会和它组成答案,算组合数统计。

开值出现次数的前缀和记录即可,为了防止重复还需要每算一遍前把前缀和中包含这个数的都减掉这个数出现的次数,但是这个修改是单调的,直接扫就可以了。

Code

用时:赛后补题

F

明天补。

Codeforces Round #690 (Div. 3) 简要题解

原文:https://www.cnblogs.com/do-while-true/p/14327911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!