03 2023 档案
摘要:0x01 最大连续子段和 1. 题目描述 给定我们一个数组,让我们求最大连续“非空”子段和。 2 贪心 + 递推 思路: 如果我们选取了 k 个数,并且他们的和小于 0 ,那么这 k 个数肯定全都不包含在最大连续子段中。因为它们肯定会使得和更小。 因此,我们可以使用递推的形式,贪心的选择每一个数,如
阅读全文
摘要:1. 题目描述 2022年天梯赛正赛 2. 思路 首先认真读题,题目说的是每次送完外卖之后不必返回起点。 另外,需要送外卖的点是逐个添加,每添加一次都要算一次最短路。 我们假设一次性把所有点都添加了,此时如何求最短路呢? 如果说我们可以一条路走到黑而无需回头走的话,那么此时最短路就是最
阅读全文
摘要:0x00 竞赛 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 0x01 感觉很典型的 ,但是我没做出来 题目大致就是说,我们有四个篮子(),每次给我们四个数(),我们可以选择一个数放到对应的篮子里。 篮子的大
阅读全文
摘要:1. 题目描述 给定我们一些有向边和无向边,判断在将所有无向边确定方向后,能否生成一个有向无环图 2. 思路 思路其实真的非常简单。 我根据题目给定的有向边做一次 ,如果失败,说明无论剩下的无向边在怎么确定方向,都不可能无环。 如果成功,那么我们便成功确定了拓扑序。那么对于剩下的没
阅读全文
摘要:0. ref 参考自 1. 题目描述 预定会议问题:给定我们一堆区间,区间不能重叠( 和 的 不算重叠),求最多能保留多少个区间? 做法:贪心,按**【右端点】**排序。 为什么要按照右端点排序?反证,如果按照左端点排序,看下面的例子: |_________|
阅读全文
摘要:1. 题目描述 354. 俄罗斯套娃信封问题 2. 思路 非常明显的上升子序列问题。但是我在做的时候遇到了一个之前做 从来没考虑过的点。 之前都是直接排序,而无论是左端点优先还是右端点优先,假设左端点优先吧并且一般都是升序,我们一般是让右端点也升序的。 也就是说,左右端点都是升序的。做了
阅读全文
摘要:1. 题目描述 T4 2. 思路 其实本题非常简单。我们只需要知道一个概念:“同余”。 即:,我们称 和 相等在 意义下。 知道了这个点,那么题目就很好做了。 对于每 ,如果我们想通过 构造出来它, 可以任意加减 $
阅读全文
摘要:求组合/排列 当我们用背包求解组合问题时,即对于解 {} 和解 {},它们是等价的,我们需要先枚举物品,再枚举体积。 当我们用背包求解排列问题时,即对于解 {} 和解 {},它们不是等价的,我们需要先枚举体积,再枚举物品。 一般
阅读全文
摘要:1. 题目描述 元素可重复的旋转数组的最小值 2. 思路 ref 对二分的奇怪知识增加了! 需要注意的一点是,由于我们在二分过程中改变了 的位置,因此不能一直使用预先存放的 ! 3. 代码 /* 本题与 153 题的区别在于,有重复元素 如果有重复元素,我们就无法确定左右区
阅读全文
摘要:0x01 跳表 题目描述 跳表介绍 0x02 LRU 题目描述 0x03 用两个栈实现队列 题目描述
阅读全文
摘要:1. 题目描述 丑数 2. 思路 很明显,丑数就是 的乘积组合。 最一开始,我竟然傻傻的 + 来求解,其实仔细想想, 肯定是不行的,因为 会一条路走到黑。 理想情况下,我们希望每个丑数都按位置放置,而不是跳着来的,例如, 之后的丑数
阅读全文
摘要:1. 题目描述 查找满足劳累天数严格大于不劳累天数的最大子区间 2. 思路 对于区间问题,很容易先想到前缀和帮助我们优化。 我们可以设,劳累=,不劳累=,那么,就是求最大的子区间 [left,right] 使得 s[right]-s[left]-1>0 成立。 其实我们是很容易想到二分
阅读全文
摘要:有层数限制时,推荐 look at here
阅读全文
摘要:1. 题目描述 题目给定我们一个数组,我们每次可以对数组的一段区间加一或者减一,问我们,使得序列所有数字相等的最少操作次数以及方案个数 2. 思路 很容易想到差分,将题目转化为(假设数组下标从 开始),最少的操作次数,使得差分数组 s[2] ~ s[n] = 0 的最少操作次数,s[1] 就
阅读全文
摘要:1. 题目描述 给定我们一些初始作物,和作物之间杂交的规则(作物 和作物 杂交产生种子 ,花费作物 和作物 成熟时间的最大值),让我们求,某个作物 出现的最小时间 2. 思路 建图 最短路应该是可以看出来的,但是对于给定的规则,作物 和作物 $b
阅读全文
摘要:一、 不能求带负权最短路 我们知道, 算法在求最短路是基于贪心思想的:每次选取一个点出队,从起点点到这个点的距离一定是最短的(其实就是, 很呆,它简单而又固执的认为,边的个数越多,你的总长度肯定更长!)。然后用这个点来更新其余的
阅读全文
摘要:发现 bug 的题目 bug 代码 void get_primes(int n) { for(int i = 2; i < n; i ++ ) { if(!st[i]) primes[idx ++ ] = i; for(int j = 0; primes[j] < n / i ; j ++ ) //
阅读全文
摘要:1. 适用题目描述 给定我们一个数组,让我们求满足某些条件的连续子数组的个数。 注意,必须连续。 另外,子数组可能有很多限制,例如常见的:非空。 还有一些特殊的比如:大小至少为2等 2. 大体思路 - 前缀和 + 哈希表 从暴力的角度出发,因为是连续数组,所以我们可以通过枚举左右端点
阅读全文
摘要:1. 题目描述 这题题意感觉说的不是很清楚,容易让人产生歧义!其实题意很简单,给你一个链表 head,你深拷贝它,然后返回即可,注意不能修改原链表 /* // Definition for a Node. class Node { public: int val; Node* next; Node*
阅读全文
摘要:1. 题目描述 剑指 Offer 44. 数字序列中某一位的数字 2. 思路 完全借鉴的参考思路。补位思想。 首先,什么是(数字的)补位。 试想这么一种情况,所有数字的位数都相同,什么意思呢?例如: 他们的位数是不相同的, 是 位, 是三位,我们可以通过添加前置
阅读全文
摘要:problem1 1. 题目描述 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 2. 思路 找一个不同点,将所有数字分为两类。 其中,两个只出现一次的数字各出现在一个集合当中。 如何找最后一个不同
阅读全文
摘要:1. 题目描述 剑指 Offer 26. 树的子结 2. 思路 1.暴力,枚举 中的每个节点,对于该节点 查找 ,时间复杂度为 , 为节点数。经典的 套 ,爆搜出奇迹!当然,爆搜归爆搜,不要忘了剪枝。小小的剪枝大大的优化。 2.好
阅读全文
摘要:1. 题目描述 和为s的连续正数序列 2. 思路 O(N) 数学做法。 等查求和公式,求根公式: 求根公式在不少题目中的优化做法可能用到,但是需要注意,求根公式有乘法运算,对于数据比较大时,可能会溢出,这一点要格外小心。 O(N)
阅读全文
摘要:1. 题目描述 打印蛇形矩阵 2. 思路 状态机模拟 我称之为模拟优化,因为代码少,简洁,优化 3. 代码(模拟优化) class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int n, m;
阅读全文
摘要:1. 题目描述 圆圈中最后剩下的数字 2. 约瑟夫环 人们站在一个等待被处决的圈子里。 计数从圆圈中的指定点开始,并沿指定方向围绕圆圈进行。 在跳过指定数量的人之后,处刑下一个人。 对剩下的人重复该过程,从下一个人开始,朝同一方向跳过相同数量的人,直到只剩下一个人,并被释放。 3. 思路 下面主要是
阅读全文
摘要:剪绳子I 1. 题目描述 dp 2. 思路 这题的思路还是比较简单的,就是划分子区间,一个长度为 的绳子,我们可以将其划分为 + ,()。 我们用 表示长度为 的绳子划分长度之后的最大乘积,则: $f[i] = max(f[i], f
阅读全文
摘要:## 1. 题目描述 > [spfa判断负环](https://www.acwing.com/problem/content/description/854/) > > [LC 设计循环队列](https://leetcode.cn/problems/design-circular-queue/)
阅读全文
摘要:一、SQL 对数据库的操纵 创建数据库 CREATEDATABASE`NAME`; CREATEDATABASEIFNOTEXISTS`NAME`; database不要写为databaes ifnotexist 必须放在 `NAME` 的前面 加上` `可以避免与关键词重名 删除数据库 DROP
阅读全文