当前位置: 首页 > news >正文

【算法日记】Day 15 动态规划专题——树状DP基础(三)

Abstract#动态规划#树状DP#贪心策略

1. 题目

  • 题目:LeetCode 968. 监控二叉树
  • 核心思路:每个摄像头可以覆盖自身、父节点和直接子节点。为了最小化摄像头数量,采用贪心策略,自底向上遍历。每个节点有3种状态:0(无覆盖)、1(有覆盖无摄像头)、2(有覆盖有摄像头)。空节点统一返回状态1。对于非空节点,如果其任一子节点处于无覆盖,则该节点必须放置摄像头;如果任一子节点有摄像头,则该节点被覆盖,按照贪心策略无需再放置摄像头;否则,左右子节点均为有覆盖无摄像头状态,该节点处于无覆盖状态0。按照策略将状态逐层向上传递。
  • 复杂度:时间复杂度O ( n ) O(n)O(n),空间复杂度O ( h e i g h t ) O(height)O(height)

2. 代码

classSolution{public:intans;intstate(TreeNode*x){if(x==nullptr)return1;intleft=state(x->left);intright=state(x->right);if(left==0||right==0){ans++;return2;}if(left==1&&right==1)return0;return1;}intminCameraCover(TreeNode*root){ans=0;intfinalState=state(root);if(finalState==0)ans++;returnans;}};

3. 心得

  • 复盘思路:这道题目的转移情况我独立想出来了(尽管没有意识到是贪心的思想),但是在实现方式上却禁锢在之前树状DP问题的状态传递方式了。更精确地说,我被局限在“放与不放”这个二元的状态中,但此题因为摄像头覆盖规则复杂,仅靠二元状态无法表达节点被谁覆盖的情况(父节点、子节点还是自身),必须区分“有覆盖无摄像头”和“有覆盖有摄像头”,因此加上“无覆盖”需要3个状态。既然已经从状态入手了,结合贪心的策略(只有存在无覆盖子结点的时候才要放置,答案才需要加一)可以知道,我们需要传递的只是状态,根据状态我们就可以判断是否在总答案中加一。
  • Special Case
    1. 空结点:不需要被监控,视为“有覆盖无摄像头”。这样叶子节点的左右子节点状态均为1,叶子节点自身状态就为0,触发父节点放置摄像头。
    2. 如果若根节点返回状态0,证明根节点还未被其子结点覆盖,需在根节点额外放置一个摄像头。

4. 相关题目

  • Luogu P2458 保安站岗
http://www.jsqmd.com/news/643143/

相关文章:

  • 钢制柱形散热器适配场景与实用性如何?
  • 新乡银河机械餐厨垃圾干化设备,处理一吨成本约100元
  • 稳压二极管在5种常见电路中的实战应用(附电路图详解)
  • 从Prompt到铂金单曲,AIAgent音乐工作流全拆解,2026奇点大会TOP3开源框架横向测评,错过再等三年!
  • 保姆级教程:在Ubuntu 22.04上为GDB手动添加glibc 2.35的调试符号与源码
  • 美胸-年美-造相Z-Turbo在机器学习教学中的应用:可视化案例集
  • 5分钟上手Llama Factory:可视化训练平台快速部署与使用
  • StructBERT-Large效果展示:社交媒体热评语义聚类与话题发现真实案例
  • 论文降AI太耗时?零成本大模型指令与4款主流工具测评
  • Node.js后端服务调用Phi-3-mini:构建AI中间层REST API实战
  • Qwen3.5-9B GPU优化:梯度检查点+序列并行降低显存峰值方案
  • PyTorch底层揭秘:c10::ArrayRef和at::IntArrayRef如何优化张量操作性能
  • 北航毕设论文排版终极指南:告别格式焦虑的完整解决方案
  • 什么是增值税发票
  • 从生活案例到统计检验:正态分布、卡方分布、t分布、F分布及其检验方法全解析
  • 独立站建站平台怎么选?新手一看就懂的选型指南|帮你少走弯路
  • AI核心知识119—大语言模型之 监督微调 (简洁且通俗易懂版)
  • Cursor Free VIP:终极解决方案,突破Cursor AI限制,免费享受Pro功能
  • 比斯特自动化动力电池组半自动生产线的工艺革新与效率提升
  • Vue前端集成Hunyuan-MT 7B:实时翻译Web应用开发实战
  • AIAgent情感陪伴不是拟人化,而是神经符号融合——2026奇点大会首席科学家亲授4步验证法
  • Qwen3在网络安全领域的应用:音视频内容安全审核字幕生成
  • 小白也能用!MedGemma医学影像分析系统快速部署教程
  • 告别机械音!用Step-Audio-EditX的标签魔法,为你的视频配音注入灵魂(附情绪/方言标签大全)
  • 2026最新数据抓取实战:如何用 ChatGPT 实现网页数据抓取?
  • **发散创新:基于Rust的内存安全防御技术实战解析**在现代软件开
  • 一站式教程:轻松修复msvcr120.dll丢失问题,提升电脑性能
  • BERT文本分割-中文-通用领域部署避坑指南:常见报错与解决方法
  • 比 FastAPI 更轻量:Starlette 源码深挖 + 手写高性能接口网关(含请求鉴权、限流)
  • 从零开始:Fiji图像处理平台全面解析与实战指南