zoukankan      html  css  js  c++  java
  • Codeforces Round #690 (Div. 3) 简要题解

    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

    首先离散化一下,线段的值域变为 ([1,2n])

    对于一条线段 (i) 来说,考虑它作为和全部线段有交的那个线段来更新答案。

    那么统计有多少线段和它不相交即可,只有在它左边或在它右边,那么就相当于对于每个 (i) 查询一下有多少 (j) 满足 (r_j<l_i)(l_j>r_i)

    两种询问分别离线下来扫一遍即可。

    Code

    反思:一眼秒了没敢写,复制粘贴忘改小地方WA了一次。

    用时:赛后补题

  • 相关阅读:
    我的Android学习路线(二)
    利用python3.x实现小爬虫下载贴吧内图片
    我的Android学习路线(一)
    根网科技面试题
    sql语句的执行顺序
    英文面试常见问题汇总
    关于oracle、sqlserver、mysql查询前N条数据的实现
    LinqToSql(一)
    关于一些概念的问题,命名空间,程序集,解决方案,项目
    索引器
  • 原文地址:https://www.cnblogs.com/do-while-true/p/14327911.html
Copyright © 2011-2022 走看看