zoukankan      html  css  js  c++  java
  • 低水平选手的自我救赎 (1)CLRS Exercise 16.5-2

    题目大意

    给定正整数 $n$ 和一个由 $m$ 个正整数构成的可重集合 $A$,满足 $forall ain A, ale n$ 且 $mle n$ 。
    定义 $N_t(A) = |{ain Acolon ale t}|$ 。请在 $O(m)$ 的时间内判断 $forall t = 0, 2, dots, n, N_t(A)le t$ 是否成立。
    多组询问。

    解法

    用一个长为 $n$ 的数组 $mathrm{cnt}[1..n]$ 记录集合 $A$ 中每个数出现的次数,若存在 $ain A, mathrm{cnt}[a]>a$ 则结论不成立,否则成立。


    这解法是错的。来源
    反例:$A={1,2,2}, n=3$
    (我要给 Solution Author 发邮件!)

    正解在此

    对于 $t ge m$,$N_t(A)le m le t$ 自然成立。
    只需考虑对 $t < m$ 是否有 $N_t(A)le t$ 。

    统计前缀和判断一下即可,复杂度 $O(m)$ 。

    总结

    1. 这道题真的没那么简单
    2. 我的水平确实低(真心的)
    3. 我要仔细读读 CLRS
    4. 把自己当做小学生!
  • 相关阅读:
    OpenCV之设计模式
    ca
    BMP结构详解
    Lucas–Kanade光流算法学习
    卡尔曼
    hash+链表
    文件操作
    查找
    fseek效率
    大家都说3C直连网络,3C网络是指什么呢?
  • 原文地址:https://www.cnblogs.com/Patt/p/8616207.html
Copyright © 2011-2022 走看看