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

[Algorithm][综合训练][kotori和气球][体操队形][二叉树中的最大路径和]详细讲解

目录

  • 1.kotori和气球
    • 1.题目链接
    • 2.算法原理详解 && 代码实现
  • 2.体操队形
    • 1.题目链接
    • 2.算法原理详解 && 代码实现
  • 3.二叉树中的最大路径和
    • 1.题目链接
    • 2.算法原理详解 && 代码实现


1.kotori和气球

1.题目链接

  • kotori和气球

2.算法原理详解 && 代码实现

  • 解法:数学 – 排列组合问题 --> n ∗ ( n − 1 ) m − 1 n * (n - 1)^{m - 1} n(n1)m1
    #include <iostream>
    using namespace std;int main()
    {const int MOD = 109;int n = 0, m = 0;cin >> n >> m;int ret = n;for(int i = 0; i < m - 1; i++){ret = ret * (n - 1) % MOD;}cout << ret << endl;return 0;
    }
    

2.体操队形

1.题目链接

  • 体操队形

2.算法原理详解 && 代码实现

  • 解法:DFS + 枚举 --> 重点是画出决策树
    #include <iostream>
    #include <vector>
    using namespace std;int n = 0, ret = 0;
    vector<int> nums;
    vector<bool> visit;void DFS(int pos)
    {if(pos == n + 1){ret++;return;}// 对于该位置,依次枚举每个队员for(int i = 1; i <= n; i++){if(visit[i]) // 剪枝 -> i队员已经被放过{continue;}if(visit[nums[i]]) // 剪枝 -> i队员的诉求已经无法完成{return;}visit[i] = true; // 放上i号队员DFS(pos + 1);visit[i] = false; // 回溯}
    }int main()
    {cin >> n;nums.resize(n + 1, 0);visit.resize(n + 1, false);for(int i = 1; i <= n; i++){cin >> nums[i];}DFS(1); // 按进入位置划分cout << ret << endl;return 0;
    }
    

3.二叉树中的最大路径和

1.题目链接

  • 二叉树中的最大路径和

2.算法原理详解 && 代码实现

  • 解法:DFS + 树形DP(后序遍历)
    • 在某棵子树上整理什么信息:经过根节点的最大路径和
      • ret = max(root->val + l + r, ret)
    • 左子树提供:以左子树为根的最大单链和
      • l = max(0, l)
    • 右子树提供:以右子树为根的最大单链和
      • r = max(0, r)
    • 返回值:以自己为根的最大单链和
      • return root->val + max(l, r);
    class Solution
    {
    public:int ret = -0x3f3f3f3f;int maxPathSum(TreeNode* root) {DFS(root);return ret;}int DFS(TreeNode* root){if(root == nullptr){return 0;}// 左右子树最大单链和int l = max(0, DFS(root->left));int r = max(0, DFS(root->right));ret = max(ret, root->val + l + r); // 经过root的最⼤路径和return root->val + max(l, r);}
    };
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 软件设计原则之开闭原则
  • 【大数据】深入解析向量数据库Faiss:搭建与使用指南
  • Swift-UITableView列表动态设置高度,根据不同的内容长度,设置heightForRowAt
  • WHAT - 通过 react-use 源码学习 React
  • 电商数据分析的价值
  • 订单类业务创建自增编码
  • Tongweb8074+7049m4 安装TongFlowControl(by lqw)
  • 指针(三)
  • MySQL 数据库自动分区
  • 使用Python恢复Windows、Linux、MacOS回收站中的文件和目录
  • MinIO实战攻略:轻松构建私有云存储解决方案
  • streamlit+wordcloud使用pyinstaller打包遇到的一些坑
  • boost库容器之Circular Buffer功能介绍,及使用示例
  • 神经网络微调技术全解(04)-- Prompt Tuning-可训练提示(Learnable Prompts)
  • 第十章 rust网络编程基础
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 08.Android之View事件问题
  • 2017前端实习生面试总结
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • java取消线程实例
  • jdbc就是这么简单
  • js中的正则表达式入门
  • Mocha测试初探
  • Object.assign方法不能实现深复制
  • spring学习第二天
  • 从0实现一个tiny react(三)生命周期
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 实习面试笔记
  • 实现菜单下拉伸展折叠效果demo
  • 手写一个CommonJS打包工具(一)
  • 我感觉这是史上最牛的防sql注入方法类
  • 怎么把视频里的音乐提取出来
  • Linux权限管理(week1_day5)--技术流ken
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ${ }的特别功能
  • (1)(1.11) SiK Radio v2(一)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (1)无线电失控保护(二)
  • (7)svelte 教程: Props(属性)
  • (C语言)逆序输出字符串
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (篇九)MySQL常用内置函数
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转载)Linux 多线程条件变量同步
  • ***通过什么方式***网吧
  • **python多态
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @angular/cli项目构建--http(2)
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [14]内置对象
  • [AHOI2009]中国象棋 DP,递推,组合数