低水平选手的自我救赎 (1)CLRS Exercise 16.5-2

题目大意

给定正整数 n 和一个由 m 个正整数构成的可重集合 A,满足 aA, anmn
定义 Nt(A)=|aA:at| 。请在 O(m) 的时间内判断 t=0,2,,n, Nt(A)t 是否成立。
多组询问。

解法

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


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

正解在此

对于 tmNt(A)mt 自然成立。
只需考虑对 t<m 是否有 Nt(A)t

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

总结

  1. 这道题真的没那么简单
  2. 我的水平确实低(真心的)
  3. 我要仔细读读 CLRS
  4. 把自己当做小学生!
posted @   Pat  阅读(201)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
点击右上角即可分享
微信分享提示