直接倒推回去即可,左边右边依次向中间扫,依次扫到的就是原序列。
用时:3min
看最前面能连"2020"的前面多少,最后面能连"2020"的后边多少,如果相加大于4即为答案。
用时:4min
最优操作为从9到1依次使用。模拟即可。
用时:3min
答案实际上是求划分成若干段,这些段的和都一一相等,且分段最多。
那么他们最后那一位的前缀和一定是个等差数列,枚举第一段的最后一位即可。
时间复杂度 \(\mathcal{O}(n^2)\)
反思:没有一眼秒掉,而是先去想 \(\mathcal{O}(n^3)\) 的区间dp,存在一定程度上的思维定式。
用时:6min
枚举 \(a_i\),\((a_j,a_k)\) 只有几种可能的取值,记录每个取值有多少个数,大力分类讨论全部方案算在一起,最后总和除以\(3\)即可。
反思:简单组合数学计算上存在严重的漏洞,分类讨论能力不够强,统计答案有处没有开ll用了7min才发现。
用时:36min
对于一个 \(a_i\) 当最大值来说,只有值在 \([\max(0,a_i-k),a_i]\) 之间的数才会和它组成答案,算组合数统计。
开值出现次数的前缀和记录即可,为了防止重复还需要每算一遍前把前缀和中包含这个数的都减掉这个数出现的次数,但是这个修改是单调的,直接扫就可以了。
用时:赛后补题
明天补。
Codeforces Round #690 (Div. 3) 简要题解
原文:https://www.cnblogs.com/do-while-true/p/14327911.html