十月ac
3494 酿造药水需要的最少时间 ** 给你两个长度为 n 和 m 的整数数组 skill 和 mana。有 n 个巫师,要按顺序酿造 m 个药水。每个药水的法力值为 mana[j],第 i 个巫师在第 j 个药水上处理的时间为 skill[i] * mana[j] 。 要确保每个药水完成后,能立即交给下一个巫师开始工作 返回酿造所有药水所需的最短时间。 有点类似流水线问题 84. 柱形图中最大的矩形 ** 柱状图中,找出最大面积的矩形, 暴力 123456789101112131415161718class Solution { public int largestRectangleArea(int[] heights) { int ans = 0; int n = heights.length; for(int i = 0;i<n;i++){ int leftArea = heights[i]; int rightArea = heights[i...
九月ac
1792. 最大平均通过率 已知每个班级的学生人数和可以通过的人数,现在再给一个额外的必定能通过考试的学生人数,求能班级平均通过率最大的分配方法。 当前平均通过率 ave=∑1npassitotali/nave=\sum_{1}^{n}\frac{pass_i}{total_i}/nave=∑1ntotalipassi/n 所以要怎么使 ave最大?首先越小的 totaltotaltotal 越容易增大通过率 那么应该如何分配呢?可以转换一下问题,在计算 ave 的时候, n 是不变的,也就是说,我们要尽可能的使通过率的和变大。显然把这些人分配给人数比较少的班级收益比较大一些。通过率增加的会比放入人较少的班级更多,那么应该分配给通过率比较高的班级还是通过率比较低的班级呢? 举个例子,对于 4/5 和 3/5 的通过率,只有一个人可以分配, 分配给第一班,则通过率和是 5/6 + 3/5 = 43/30 ;分配第二班,则通过率和是 4/5 + 4/6 = 44/30 ,可以看出分配给通过率低的班级收益大一点。为什么呢?比如说 4/5 ,增加一个合格的人,通过率固然会提高...
计算机网络复习笔记
《计算机网络教程(微课版)》 谢钧 谢希仁编著 1.2 计算机网络的定义与分类 局域网(Local Area Network,LAN)用于连接有限范围内(如一个实验室、一幢楼或一个校园)的各种计算机、终端与外部设备。 城域网(Metropolitan Area Network,MAN)的覆盖范围可跨越几个街区甚至整个城市,其作用距离为5~50km。 广域网(Wide Area Network,WAN)的覆盖范围通常为几十千米到几千千米,可以覆盖一个国家、地区,甚至横跨几个洲,因而广域网有时也称为远程网(Long Haul Network)。 1.3 互联网概述 网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。 以小写字母i开始的internet(互连网络)是一个通用名词,它泛指由多个计算机网络互连而成的网络。 边缘部分由所有连接在互联网上的主机组成。 核心部分由大量网络和连接这些网络的路由器组成。 1.5 计算机网络的主要性能指标 吞吐量(Throughput)也称为吞吐率,表示在单位时间内通过某个网络(或...
八月ac
113.路径总和 II 给你二叉树的根节点root 和一个整数目标和targetSum ,找出所有从根节点到叶子节点路径总和等于给定目标和的路径 回溯-添加的角度 当前操作:维护一个sum,用目标值减去当前节点的值 子问题:进入左孩子或右孩子,用目标值减去其值 下一个子问题:same 1234567891011121314151617181920212223242526272829303132333435363738/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * t...
红黑树
ps:本文中结点和节点是同义词 红黑树的性质 红黑树是一棵二叉搜索树,它在每一个结点上增加了一个存储位来表示结点的颜色 ,可以是RED或BLACK 。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树可以确保没有一条路径会比其它路径长出两倍,因而是近似于平衡的。 12345678struct node{ char color; int key; *node left; *node right; *node p; } 如果一个结点没有子结点或父结点,则该结点相应指针属性的值为 NIL。我们将这些 NIL 视为二叉搜索树的叶结点(外部结点)的指针,而把带关键字的结点视为树的内部结点。 一棵红黑树是满足一下红黑性质的二叉搜索树: 每个结点或是红色的,或是黑色的 根节点是黑色的 每个叶结点(NIL)是黑色的 如果一个结点是红色的,则它的两个子结点都是黑色的 对每个结点,从该结点到其所有后代结点的简单路径上,均包含相同数目的黑色结点。 ^923721 黑高:从某个结点 x 出发(不含该结点)到达一个叶结点的任意一条简单路径上的黑色结点个数称为该结点的...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start Create a new post 1$ hexo new "My New Post" More info: Writing Run server 1$ hexo server More info: Server Generate static files 1$ hexo generate More info: Generating Deploy to remote sites 1$ hexo deploy More info: Deployment
动态规划
引言 动态规划与分治方法相似,都是通过组合子问题的解来求解原问题。 分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。 动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将其划分为更小的子问题)。 在这种情况下,分治算法会重复计算很多子问题,而动态规划会将子问题的解存储起来(如用数组),从而避免每次求解一个子问题都需要重新计算。 动态规划方法通常用来求解最优化问题,这类问题可以有很多可行解,每个解都有一个值,我们希望寻找具有最优值的解。 我们称这样的解为问题的一个最优解(一个问题可能有很多最优解)。 动态规划的四个步骤 求出一个最优子结构 递归地定义最优解的值 计算最优解的值,通常采用自底向上的方法 利用计算出的信息构造一个最优解 DP萌新三步 思考回溯应该怎么写 入参和返回值 递归到哪里 递归边界和入口 改成记忆化搜索 1比1翻译成递推 钢条切割 问题描述 给定一段长度为 n 英寸的钢条和一个价格表 pi(i=1,2,…,n)p_i(i=1,2,\dots,n)pi(i=1...