zoukankan      html  css  js  c++  java
  • 2020-08-11 题目题解

    又来这边苟了一天,感觉可以听学长讲完再回归新初三那边吧,毕竟自己也不是新高二的。。。今天讲题的yhn学长果真是强者,可以在大考连续失误错失rank1,然后高考翻盘进北大。。。

    Vasya and Big Integers

    题目传送门

    题目大意

    给出一个大数 (a,l,r) ,求有多少种对 (a) 的划分方法使得划分出来的每一块都在 ([l,r]) 之间。

    (a,l,rle 10^{1000000})

    思路

    这道题我只能讲一下大概的思路,因为我自己并没有过掉,打了两个表才过掉,如果真的有人会看我这个小蒟蒻的博客的话,希望他能帮我看一下哪有问题。。。

    我们不难想到设 (f_i) 表示划分到 (i) 的合法方案数,不难得到一个 (Theta(n^2)) 的方法,即暴力转移用 ( ext{hash}) 判断是否合法。

    我们又发现,可以转移的点一定是连续的,于是我们可以移动左右端点,然后每次用 ( ext{hash}) 判断两数大小。

    时间复杂度 (Theta(nlog n)),其中 (n)(a) 的位数,假设 (l,r) 的位数与 (n) 同阶。

    虽然说起来很简单,但是有一些有关前导零的细节,还有一些奇奇怪怪的问题,所以实现起来很麻烦。。。

    ( exttt{Code})

    代码戳这里打开

    Recovering BST

    题目传送门

    题目大意

    给出一个 (n) 的二叉树的中序遍历结果,求出是否存在一种方法使得该树一条边连接两点的点权 (a_i)(gcd) 不为 (1)

    (nle 700,a_ile 10^9)

    思路

    比较上一道实现起来比较简单。。。

    不难想到一个dp方法,设 (f_{l,r,0/1}) 表示 ([l,r]) 作为父节点的左/右区间的合法性,然后就可以做到 (Theta(n^3))

    ( exttt{Code})

    代码戳这里打开

    Helping People

    题目传送门

    题目大意

    给出一个长度为 (n) 的序列,第 (i) 个点的初值为 (a_i) ,有 (m) 次操作,每次有 (p_i) 的概率将 ([l_i,r_i]) 集体加 (1) ,问最后最大值的期望。

    (nle 10^5,mle 5000),并且操作区间要么不相交要么完全包含。

    思路

    本来想用 ( ext{Min-Max}) 容斥,但是看到 (nle 10^5) 就放弃了。需要注意的是 :最大值的期望不等于期望的最大值 (这个学过期望的应该都明白吧?)

    期望突破点就在于操作区间的关系,可以看出这个其实就是一个树形结构。然后我们就可以树形dp了,我们可以设 (f_{u,i}) 表示 (u) 这个区间最大值小于等于 ((i+max_{j=l}^{r}a_j)) 的概率,然后转移就很简单了,具体见代码。最后的答案也很好求,这里就不赘述了。

    时间复杂度为 (Theta(m^2))

    ( exttt{Code})

    代码戳这里打开

  • 相关阅读:
    Kafka日志段源码分析
    Kafka日志结构概览
    LDAP统一身份认证解读及实践
    Keycloak集成三方身份提供者的注销流程
    Keycloak会话管理-refreshToken
    Cas校验INVALID_TICKET-not recognized
    如何获取Docker容器的root权限
    OIDC-code to token
    Newrelic集成wildfly报NoClassDefFoundError
    Cookie深入详解
  • 原文地址:https://www.cnblogs.com/Dark-Romance/p/13485235.html
Copyright © 2011-2022 走看看