AcWing
文章平均质量分 56
AcWing题解、模板等
彡倾灬染|
这个作者很懒,什么都没留下…
展开
-
AcWing算法基础课----动态规划(一) 笔记 ( 背包:01、完全、多重、分组 )
动态规划常用模型背包01背包完全背包多重背包分组背包常用模型背包线性dp区间dp重点:状态转移出发点:1. 状态表示(几维)例如 f(i,j) a.集合 - 所有选法 - 条件 b.属性 Max、Min、数量2. 状态计算(如何一步一步计算出每一步)dp优化:对代码或者方程进行等价变形背包n个物品,容量V的背包,每个物品v体积、w价值01背包n个物品,容量V的背包,每个物品v体积、w价值特点:每件物品最多用一次所有选法满足1.只从前i个物品中选2.总体积<=原创 2021-08-23 09:29:18 · 191 阅读 · 0 评论 -
AcWing算法提高课----图论 笔记 (LCA最近公共祖先 向上标记法 + 倍增法 + Tarjan离线求LCA)
最近公共祖先LCA问题1. 向上标记法 O(n)2. 倍增法 O(mlogn)方法3:Tarjan算法——离线求LCA O(n+m)例题1:AcWing1172.祖孙查询(倍增法)例题2:AcWing1171.距离(Tarjan离线LCA算法)LCA问题解决方法:1. 向上标记法 O(n)从x向上走到根节点, 并标记路径上经过的点从y向上走到根节点, 当遇到第一个被标记的点就找到了LCA(x, y)2. 倍增法 O(mlogn)预处理fa[i,j]表示从i开始,向上走2^j原创 2021-08-18 11:32:41 · 519 阅读 · 0 评论 -
AcWing算法提高课----图论 笔记 (差分约束)
差分约束知识点讲解例题一:AcWing1169.糖果例题二:AcWing.362 区间例题三:AcWing1170. 排队布局知识点讲解差分约束可以求什么:求不等式组的可行解如何求最大值或者最小值Q1:如何求不等式组的可行解形如:xix_ixi <=<=<= xjx_jxj +++ ckc_kck的不等式其中xix_ixi xjx_jxj为自变量 ckc_kck为常量可以看成j-->i(c)的边对于每一条边都会满足dist[i] <= dist原创 2021-08-17 11:05:55 · 587 阅读 · 0 评论 -
AcWing算法提高课----图论 笔记 (SPFA找负环)
SPFA找负环知识点讲解例题1:AcWing904.虫洞01分数规划例题2:AcWing361.观光奶牛知识点讲解负环:在一个有向(无向)图当中, 存在一个环路,使得这个环的边权之和小于0求负环常见方法(基于SPFA、抽屉原理):统计每个点入队的次数,如果某个点入队n次,则说明存在负环(等价于bellman-Ford)统计当前每个点的最短路中所包含的边数,如果某点的最短路所包含的边数大于等于n,则也说明存在负环(推荐)2优于1的原因,若上图环中2的方法O(n),1的方法O(n^2)图中负原创 2021-08-16 10:59:19 · 509 阅读 · 0 评论 -
AcWing算法基础课----数学知识(四) 笔记 ( 容斥原理 + 简单博弈论 )
数学知识容斥原理简单博弈论NIM游戏公平组合游戏ICG有向图游戏Mex运算SG函数有向图游戏的和容斥原理简单博弈论NIM游戏给定N堆物品,第i堆物品有Ai个。两名玩家轮流行动,每次可以任选一堆,取走任意多个物品,可把一堆取光,但不能不取。取走最后一件物品者获胜。两人都采取最优策略,问先手是否必胜。我们把这种游戏称为NIM博弈。把游戏过程中面临的状态称为局面。整局游戏第一个行动的称为先手,第二个行动的称为后手。若在某一局面下无论采取何种行动,都会输掉游戏,则称该局面必败。所谓采取最优策略是指原创 2021-08-10 11:00:09 · 351 阅读 · 0 评论 -
AcWing算法基础课----数学知识(三) 笔记 ( 高斯消元 + 求组合数 )
数学知识高斯消元 O(n^3)求组合数1.递归法求组合数2.Lucas定理3.分解质因数法求组合数高斯消元 O(n^3)解方程: 无解 \ 无穷多解 \ 有唯一解利用线性代数初等行列变换1.把某一行乘一个非零的数2.交换某两行3.把某行若干倍加到另一行上去变换之后结果与解的关系:1.完美阶梯型 唯一解2.不完美阶梯型 0=非零 无解3.不完美阶梯型 0=0 无穷解浮点数判断是否为零 需要和eps比算法步骤:枚举每一列c找到绝对值最大的一行将该行换到最上面将原创 2021-08-09 10:52:05 · 301 阅读 · 0 评论 -
AcWing算法基础课----数学知识(二) 笔记 (欧拉函数 + 快速幂 + 扩展欧几里得 + 中国剩余定理)
数学知识欧拉函数快速幂扩展欧几里得中国剩余定理欧拉函数1~n中与n互质的数的个数求欧拉函数int phi(int x){ int res = x; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) { res = res / i * (i - 1); while (x % i == 0) x /= i; } if (x &原创 2021-08-03 11:00:54 · 290 阅读 · 0 评论 -
AcWing算法基础课----数学知识(一) 笔记 (数论 质数 + 约数)
数学知识数论质数试除法判定质数 O(sqrt(n))试除法分解质因数 O(logn)~O(sqrt(n))朴素筛法求素数 O(nlogn)线性筛法求素数约数试除法求所有约数 O(sqrt(n))约数个数和约数之和欧几里得算法 (辗转相除法)数论数论问题每一步都要计算时间复杂度,只有每一步都不超时才能做质数定义:质数(素数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。试除法判定质数 O(sqrt(n))模板:bool is_prime(int x){原创 2021-07-31 11:04:33 · 280 阅读 · 0 评论 -
AcWing算法基础课----搜索与图论(三) 笔记 (最小生成树 + 二分图)
搜索与图论1. 朴素版prim算法2. Kruskal算法3.染色法判别二分图4.匈牙利算法1. 朴素版prim算法模板:时间复杂度是 O(n2+m), n 表示点数,m 表示边数int n; // n表示点数int g[N][N]; // 邻接矩阵,存储所有边int dist[N]; // 存储其他点到当前最小生成树的距离bool st[N]; // 存储每个点是否已经在生成树中// 如果图不连通,则返回INF(值是0x3f3f3f3f),原创 2021-07-30 17:24:37 · 364 阅读 · 0 评论 -
AcWing算法基础课----搜索与图论(二) 笔记 (最短路:Dijkstra、Bellman-Ford、SPFA、Floyd)
搜索与图论常见的最短路问题朴素dijkstra算法堆优化版dijkstraBellman-Ford算法spfa 算法(队列优化的Bellman-Ford算法)spfa判断图中是否存在负环floyd算法常见的最短路问题源点:起点 汇点:终点n 点数 m 边数单源最短路所有边权都是正数a.朴素Dijkstra算法 O(n^2) 稠密图b.堆优化版的Dijkstra算法 O(mlogn) 稀疏图存在负权边a.Bellman-Ford O(nm) 对边数有限制原创 2021-07-30 11:36:45 · 373 阅读 · 2 评论 -
AcWing算法基础课----搜索与图论(一) 笔记 (DFS与BFS + 拓扑排序)
搜索与图论深度优先搜索 DFS宽度优先搜索 BFS树与图的存储树与图的遍历DFSBFS拓扑排序深度优先搜索 DFS宽度优先搜索 BFS对比DFS、BFSDFS:数据结构:stack 空间:O(h) 不具有最短性BFS:数据结构:queue 空间:O(2^h) 最短路概念,具有最短性树与图的存储树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b, b->a。因此我们可以只考虑有向图的存储。(1) 邻接矩阵:g[原创 2021-07-28 20:58:20 · 450 阅读 · 0 评论 -
AcWing算法基础课----数据结构(三) 笔记 (Hash + 字符串哈希 + STL应用)
数据结构Hash表存储结构1.开放寻址法2.拉链法字符串哈希C++STLHash表把特别大的数据映射到0~n存储结构1、 x mod len(质数)2、 冲突解决冲突:1.开放寻址法数组开的范围一般为题目给定的2~3倍模板:int h[N]; // 如果x在哈希表中,返回x的下标;如果x不在哈希表中,返回x应该插入的位置 int find(int x) { int t = (x % N + N) % N; while (h[t]原创 2021-07-28 17:00:12 · 229 阅读 · 0 评论 -
AcWing算法基础课----数据结构(二) 笔记 (Tire树 + 并查集 + 堆)
数据结构原创 2021-07-27 11:02:26 · 182 阅读 · 0 评论 -
AcWing算法基础课----数据结构(一) 笔记 (链表和邻接表 + 栈与队列 +KMP)
数据结构1.链表与邻接表1. 数组模拟单链表 (用的多的是 邻接表:存储数和图)2. 数组模拟双链表 (优化某些问题)2.栈与队列1. 模拟栈(先进后出)2. 模拟队列(先进先出)3.单调栈4.单调队列3.KMP1.链表与邻接表动态链表时间太长(new node)采用:数组模拟链表1. 数组模拟单链表 (用的多的是 邻接表:存储数和图)定义 : e 值 | ne 某点next指针(空节点-1) |int e[N],ne[N]关联:e和ne 通过下标模板静态链表(快!)// head存原创 2021-07-26 10:09:28 · 794 阅读 · 0 评论 -
AcWing算法基础课----基础算法(二) 习题题解
基础算法一 习题基础知识讲解链接791. 高精度加法792. 高精度减法793. 高精度乘法794. 高精度除法795. 前缀和796. 子矩阵的和797. 差分798. 差分矩阵基础知识讲解链接传送门791. 高精度加法题目链接答案#include <iostream>#include <algorithm>#include<bits/stdc++.h>#define ll long long#define mem(a,b) memset(a,b,s原创 2021-05-24 20:55:38 · 380 阅读 · 0 评论 -
AcWing算法基础课----基础算法(二) 笔记 (高精度算数 + 前缀和 + 差分)
基础算法高精度前缀和与差分高精度常用分类:两个大整数相加(A+B) A和B位数大约为1e6两个大整数相减(A-B) A和B位数大约为1e6一个大整数乘一个小整数(A*a)len(A)<=1e6 / a<=1e9一个大整数除一个小整数(A/a) len(A)<=1e6 / a<=1e9大整数如何存储:每一位存到数组中(从个位开始存较好)思路:A+B(模拟人工加法)C[i]=A[i]+B[i]+t(上一位进位)模板// C = A + B, A >原创 2021-05-24 17:02:35 · 410 阅读 · 0 评论 -
AcWing算法基础课----基础算法(一) 习题题解
基础算法一 习题基础知识讲解链接785 快速排序786 第k个数787 归并排序788 逆序对的数量789 数的范围790 数的三次方根基础知识讲解链接传送门785 快速排序题目链接答案#include<bits/stdc++.h>const int N = 1e5 + 10;using namespace std;int dp[N];void quick_sort(int q[], int l, int r) { if (l >= r) return;原创 2021-05-19 21:06:09 · 630 阅读 · 3 评论 -
AcWing算法基础课----基础算法(一) 笔记 (排序 + 二分)
基础算法 排序快速排序归并排序二分整数二分浮点数二分排序学习方法:学习代码的主要思想模板理解+记忆刷题(模板题默写3~5遍)快速排序快排 --> 基于分治y总快排讲解思想:确定分界点(通常为 q[l]、q[(l+r)/2]、q[r]、随机(不常用))★调整区间☆ —>划分为两个区间,第一个区间所有数都小于等于x,第二个区间所有数都大于等于x递归处理左右两端模板:void quick_sort(int *q,int l,int r){ if(l>原创 2021-05-19 17:07:58 · 468 阅读 · 0 评论 -
AcWing 1222. 密码脱落(区间DP + 线性DP)
题目链接输入样例1:ABCBA输出样例1:0输入样例2:ABDCDCBABC输出样例2:3答案:#include<bits/stdc++.h>#define ll long long#define INF 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof(a))int dx[4]={-1,0,1,0};int dy[4]={0,1,0,-1};const int N = 1111;using namespace原创 2021-04-03 21:08:11 · 119 阅读 · 0 评论 -
AcWing 592. 雨(单源最短路 + 最小生成树 + Dijkstra + Prim + 堆)
题目链接输入样例:33 33 5 55 4 55 5 54 45 5 5 15 1 1 55 1 5 55 2 5 84 32 2 22 1 22 1 22 1 2输出样例:Case #1: 1Case #2: 3Case #3: 0答案:#include<bits/stdc++.h>#define ll long long#define INF 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof原创 2021-04-03 20:59:22 · 128 阅读 · 0 评论 -
AcWing 131. 直方图中最大的矩形(单调栈)
题目链接直方图是由在公共基线处对齐的一系列矩形组成的多边形。矩形具有相等的宽度,但可以具有不同的高度。例如,图例左侧显示了由高度为 2,1,4,5,1,3,3 的矩形组成的直方图,矩形的宽度都为 1:通常,直方图用于表示离散分布,例如,文本中字符的频率。现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。图例右图显示了所描绘直方图的最大对齐矩形。输入格式输入包含几个测试用例。每个测试用例占据一行,用以描述一个直方图,并以整数 n 开始,表示组成直方图的矩形数目。然后跟随 n 个整数原创 2021-03-24 15:04:19 · 188 阅读 · 0 评论 -
AcWing 1497. 树的遍历(树的遍历)
题目链接一个二叉树,树中每个节点的权值互不相同。现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。输入格式第一行包含整数 N,表示二叉树的节点数。第二行包含 N 个整数,表示二叉树的后序遍历。第三行包含 N 个整数,表示二叉树的中序遍历。输出格式输出一行 N 个整数,表示二叉树的层序遍历。数据范围1≤N≤30输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2答案:法一:#include <iostream&原创 2021-03-23 20:23:34 · 186 阅读 · 0 评论 -
LeetCode 341. 扁平化嵌套列表迭代器
题目链接给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。示例 1:输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。示例 2:输入: [1,[4,[6]]]输出: [1,4,6]解释: 通过重复调用 next 直到 h原创 2021-03-23 20:19:30 · 81 阅读 · 0 评论 -
AcWing 3174. 旋转(模拟)
题目链接图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转 90 度。我们用一个 n×m 的二维数组来表示一个图片,例如下面给出一个 3×4 的图片的例子:1 3 5 79 8 7 63 5 9 7这个图片顺时针旋转 90 度后的图片如下:3 9 15 8 39 7 57 6 7给定初始图片,请计算旋转后的图片。输入格式输入的第一行包含两个整数 n 和 m,分别表示行数和列数。接下来 n 行,每行 m 个整数,表示给定的图片。图片中的每个元素(像素)为一个原创 2021-03-21 17:19:14 · 103 阅读 · 0 评论 -
LeetCode 73. 矩阵置零(原地算法)
题目链接给定一个m x n的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn)的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用O(m + n)的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matr原创 2021-03-21 17:06:13 · 206 阅读 · 0 评论 -
AcWing 3302. 表达式求值(栈 + 表达式求值)
题目链接给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。题目保证表达式中所有数字均为正整数。题目保证表达式在中间计算过程以及结果中,均不超过 231−1。题目中的整除是指向 0 取整,也就是说对于大于 0 的结果向下取整,例如 5/3=1,对于小于 0 的结果向上取整,例如 5/原创 2021-03-21 16:46:46 · 89 阅读 · 0 评论 -
LeetCode 150. 逆波兰表达式求值(栈操作)
题目链接根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = ["4","13","5","/","+"]原创 2021-03-21 16:28:36 · 84 阅读 · 0 评论 -
AcWing 3267. 小明上学(模拟)
题目链接小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒,那么从 0 时刻起,[0,r)秒内亮红灯,车辆不许通过;[r,r+g) 秒内亮绿灯,车辆允许通过;[r+g,r+g+y)秒内亮黄灯,车辆不许通过,然后依次原创 2021-03-19 19:35:20 · 122 阅读 · 0 评论 -
LeetCode 1603. 设计停车系统
题目链接请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现 ParkingSystem 类:-ParkingSystem(int big, int medium, int small)初始化ParkingSystem 类,三个参数分别对应每种停车位的数目。bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType有三种类型:大,中,小,分别用数字 1, 2 和 3 表示。一辆车只能停原创 2021-03-19 19:20:41 · 111 阅读 · 0 评论 -
AcWing 35. 反转链表(链表)
题目链接定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思考题:请同时实现迭代版本和递归版本。样例输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL思路法一:答案/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;原创 2021-03-18 16:37:34 · 124 阅读 · 0 评论 -
AcWing 3240. 压缩编码(区间DP + Huffman树)
题目链接给定一段文字,已知单词 a1,a2,…,an 出现的频率分别 t1,t2,…,tn。可以用 01 串给这些单词编码,即将每个单词与一个 01 串对应,使得任何一个单词的编码(对应的 01 串)不是另一个单词编码的前缀,这种编码称为前缀码。使用前缀码编码一段文字是指将这段文字中的每个单词依次对应到其编码。一段文字经过前缀编码后的长度为:L=a1 的编码长度 ×t1+a2 的编码长度 ×t2+…+an 的编码长度 ×tn。定义一个前缀编码为字典序编码,指对于 1≤i<n,ai 的编码(原创 2021-02-21 08:40:17 · 92 阅读 · 0 评论 -
AcWing 3257. 跳一跳(模拟)
题目链接近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。如果跳到了方块上,但没有跳到方块的中心则获得 1 分;跳到方块中心时,若上一次的得分为 1 分或这是本局游戏的第一次跳跃则此次得分为 2 分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将 +2,+4,+6,+8…)。现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。输入格式输入包含多个数字,用空格分原创 2021-02-21 08:28:16 · 139 阅读 · 0 评论 -
AcWing 3250. 通信网络(枚举 + BFS + DFS)
题目链接某国的军队由 N 个部门组成,为了提高安全性,部门之间建立了 M 条通路,每条通路只能单向传递信息,即一条从部门 a 到部门 b 的通路只能由 a 向 b 传递信息。信息可以通过中转的方式进行传递,即如果 a 能将信息传递到 b,b 又能将信息传递到 c,则 a 能将信息传递到 c。一条信息可能通过多次中转最终到达目的地。由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在。只有当两个部门之间可以直接或间接传递信息时,他们才彼此知道对方的存在。部门之间不会把自己知道哪些部门告诉其原创 2021-02-20 09:25:58 · 136 阅读 · 0 评论 -
AcWing 3215. 网络延时(树的直径 + BFS + DFS + 树形DP)
题目链接给定一个公司的网络,由 n 台交换机和 m 台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为 1 的交换机为根交换机,层级为 1。其他的交换机都连接到一台比自己上一层的交换机上,其层级为对应交换机的层级加 1。所有的终端电脑都直接连接到交换机上。当信息在电脑、交换机之间传递时,每一步只能通过自己传递到自己所连接的另一台电脑或交换机。请问,电脑与电脑之间传递消息、或者电脑与交换机之间传递消息、或者交换机与交换机之间传递消息最多需要多少步。输入格式输原创 2021-02-18 22:50:27 · 168 阅读 · 0 评论 -
AcWing 3205. 最优配餐(BFS + 多源BFS)
题目链接栋栋最近开了一家餐饮连锁店,提供外卖服务。随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。栋栋的连锁店所在的区域可以看成是一个 n×n 的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。方格图中的线表示可以行走的道路,相邻两个格点的距离为 1。栋栋要送餐必须走可以行走的道路,而且不能经过红色标注的点。p41.png送餐的主要成本体现在路上所花的时间,每一份餐每走一个单位的距离需要花费 1原创 2021-02-17 19:54:55 · 137 阅读 · 0 评论 -
AcWing 3195. 有趣的数(枚举 + 组合计数)
题目链接我们把一个数称为有趣的,当且仅当:它的数字只包含 0,1,2,3,且这四个数字都出现过至少一次。所有的 0 都出现在所有的 1 之前,而所有的 2 都出现在所有的 3 之前。最高位数字不为 0。因此,符合我们定义的最小的有趣的数是 2013。除此以外,4 位的有趣的数还有两个:2031 和 2301。请计算恰好有 n 位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以 109+7 的余数。输入格式输入只有一行,包括恰好一个正整数 n。输出格式输出只有一行,包括恰好原创 2021-02-17 19:16:58 · 133 阅读 · 0 评论 -
AcWing 730. 机器人跳跃问题(二分 + 递推)
题目链接机器人正在玩一个古老的基于DOS的游戏。游戏中有N+1座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为 i 的建筑高度为H(i)个单位。起初,机器人在编号为0的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第k个建筑,且它现在的能量值是E,下一步它将跳到第k+1个建筑。如果H(k+1)>E,那么机器人就失去H(k+1)-E的能量值,否则它将得到E-H(k+1)的能量值。游戏目标是到达第N个建筑,在这个过程中能量值不能为负数个单位。现在的问题是原创 2021-02-17 18:39:59 · 139 阅读 · 0 评论 -
AcWing 507. 积木大赛(差分 + 贪心)
题目链接春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi。在搭建开始之前,没有任何积木(可以看成块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第L块到第R块之间(含第 L 块和第 R 块)所有积木的高度分别增加1。小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最原创 2021-02-17 18:30:54 · 108 阅读 · 0 评论 -
AcWing 148. 合并果子(贪心 + 二叉堆 + Huffman树)
题目链接在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少,原创 2021-02-17 18:23:52 · 137 阅读 · 0 评论 -
AcWing 496. 机器翻译(模拟 + 队列)
题目链接小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。假设内存中有M个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M−1,原创 2021-02-17 18:10:24 · 153 阅读 · 0 评论
分享