摘要:
题面 给定一个 \(n\) 个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。 一个结点的深度之定义为该节点到根的简单路径上边的数量。 分析 本题可以用树形DP做。 首先,把树按照链式前向星的方法保存。 然后考虑第 \(i\) 个点的深度来DP,先求 \(DP_1\),然后往下 阅读全文
摘要:
存图 存图一般分为两种,邻接矩阵与邻接表(链式前向星)。 邻接矩阵 邻接矩阵比较简单,就是定义一个二维数组 \(E\),然后 \(E[i][j]\) 就是代表有一条有向边 \(i \rightarrow j\)。 空间复杂度为 \(O(n^2)\),\(n\) 为节点数。 示例代码如下: struc 阅读全文
摘要:
基本思想 线段树(Segment Tree)是一种特殊的二叉树,每个节点维护一个区间,可以用来处理区间更新、单点修改、单点查询、区间查询的数据结构。 建树(build) 建树使用分治的思想,将一个区间 \((l,r)\) 拆成两份,分别为 \((l,mid)\) 与 \((mid+1,r)\),分别 阅读全文
摘要:
分析 这是一个分类讨论的题目,不需要太多的技巧,但是需要一定的耐心与数学功底。 后 后可以横、竖、斜着走。因此一行只能有一个皇后,一列也只能有一个皇后(要不然就会互吃),所以能放置 \(\min(n,m)\) 个皇后。 车 车和后差不多。也是一行只能有一个,一列也只能有一个,也只能放置 \(\min 阅读全文
摘要:
简化版题意 取若干个前缀和,使他们的和最大。求这个和 思路 暴力枚举,如果前缀和大于0,那么累加。时间复杂度为 \(O(n)\),可以水过。 源代码 #include <bits/stdc++.h> #define int long long signed main(){ int n,qzh=0,r 阅读全文
摘要:
\(\textbf{基础思路:DFS+记忆化。}\) 题意理解 nbvvnv 基本框架 #include<bits/stdc++.h> #define For(looper,begin,end) for(int looper=begin;looper<=end;looper++) using nam 阅读全文
摘要:
例题 LeetCode 239. Sliding Window Maximum 可能没有办法注册,就点这里 题目 给你一个整数数组 nums,有一个大小为 \(k\) 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 \(k\) 个数字。滑动窗口每次只向右移动一位。 返回滑动窗 阅读全文
摘要:
题面 最近 \(\text{lxhgww}\) 又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律。 通过一段时间的观察,\(\text{lxhgww}\) 预测到了未来 \(T\) 天内某只股票的走势,第 \(i\) 天的股票买入价为每股 \(AP_i\),第 \(i\) 天 阅读全文
摘要:
并查集是可以用来处理类似家谱的需要快速合并与查找祖先的一种集合性质的数据结构 并查集模板 // size:大小 compress:路径压缩 merge_rank:按秩合并 template<int size=2500,bool compress=true,bool merge_rank=true> 阅读全文
摘要:
题面 在 \(x-y\) 直角坐标平面上有 \(n\) 条直线 \(L_1,L_2,…L_n\),若在 \(y\) 值为正无穷大处往下看,能见到 \(L_i\) 的某个子线段,则称 \(L_i\) 为可见的,否则 \(L_i\) 为被覆盖的。 例如,对于直线: \(L_1:y=x\); \(L_2: 阅读全文