
算法刷题
文章平均质量分 62
卷王2048
没有参加ACM是永远的遗憾
展开
-
算法刷题总结
算法刷题总结动态规划提高课dp题解集合提高课题单+题解(69/220) - AcWing背包问题模板题目链接题意描述题目总结c++题解python3题解Java题解自己的代码[01背包问题](2. 01背包问题 - AcWing题库)背包容量mmm,物品数nnn,每个物品只能选一次,第一层循环枚举所有物品,第二层循环倒着枚举体积完全背包问题背包容量mmm,物品数nnn,每个物品可以无限选第一层循环枚举所有物品,由于不限制每个物品的数量第二层循环原创 2022-03-25 14:57:44 · 2166 阅读 · 0 评论 -
一个蠢蛋的算法思维提升之路
一个蠢蛋的算法思维提升之路写在前面博主是一个喜欢胡思乱想的蠢蛋,我无论学什么都在想:1.我为什么要学这个:到底是为了考试升学,还是为了面试找工作,还是想在其他人面前装b2.学这个知识能给我带来哪些提升?3.为什么别人学的比我轻松?到底是因为笨,还是因为方法不对?还是有认知上的差距?已经刷了600+题,却还是感觉在原地踏步,学了后面忘了前面o(╥﹏╥)o,和刚入门速成的新手一个样本文就是博主的内心os,希望大家看了就当图一乐算法是什么,为什么要学习算法我们写一段程序,是希望让计算机去代替我们原创 2022-03-13 18:46:04 · 969 阅读 · 0 评论 -
面试翻车之——股票专题(贪心+状态机dp)
面试翻车之——股票专题(贪心+状态机dp)1.1054. 股票买卖 - AcWing题库(贪心)题意:只能交易一次,求最大利润题解:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;int a[N];int n;int main(){ cin>>n; int minv = 0原创 2022-03-12 12:16:29 · 831 阅读 · 0 评论 -
AcWing 1945. 奶牛棒球
AcWing 1945. 奶牛棒球农夫约翰的 N 头奶牛排成一排,每头奶牛都位于数轴中的不同位置上。它们正在练习投掷棒球。农夫约翰观看时,观察到一组三头牛(X,Y,Z)完成了两次成功的投掷。牛 XX 把球扔给她右边的牛 Y,然后牛 Y把球扔给她右边的牛 Z。约翰指出,第二次投掷的距离不少于第一次投掷的距离,也不超过第一次投掷的距离的两倍。请计算共有多少组牛 (X,Y,Z)可能是约翰所看到的。输入格式第一行包含整数 N。接下来 N行,每行描述一头牛的位置。输出格式输出奶牛三元组 (X,Y原创 2022-02-20 21:21:58 · 513 阅读 · 1 评论 -
Acwing4211. 序列重排
Acwing4211. 序列重排给定一个长度为 n 的整数序列 a1,a2,…,ana1,a2,…,ana1,a2,…,an。请你对序列进行重新排序(也可以保持原序列),要求新序列满足每个元素(第 1 个除外)都恰好是前一个元素的两倍或前一个元素的三分之一。保证输入一定有解。输入格式第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,ana1,a2,…,ana1,a2,…,an。输出格式一行 n 个整数,表示排序后的序列。输出任意合法方案即可。数据范围前三个测试点满足 2≤n≤1原创 2022-02-20 21:21:24 · 686 阅读 · 0 评论 -
神奇的dfs(dfs在非搜索题中的应用)
神奇的dfs(dfs在非搜索题中的应用)1.处理表达式例题一:1225. 正则问题 - AcWing题库题目考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达式。小明想求出这个正则表达式能接受的最长字符串的长度。例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。输入格式一个由x()|组成的正则表达式。输出格式输出所给正则表达式能接受的最长字符串的长度。数据范围输入长度不超过100,保证合法。输入样例:((xx|xxx)x原创 2022-02-20 21:01:02 · 179 阅读 · 0 评论 -
Acwing292. 炮兵阵地(网格型状态压缩dp)
Acwing292. 炮兵阵地(网格型状态压缩dp)题目司令部的将军们打算在 N×M 的网格地图上部署他们的炮兵部队。一个 N×M 的地图由 N 行 M 列组成,地图的每一格可能是山地(用 H 表示),也可能是平原(用 P 表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它原创 2021-11-18 15:45:05 · 157 阅读 · 0 评论 -
AcWing 291. 蒙德里安的梦想(状态压缩dp模板)
AcWing 291. 蒙德里安的梦想(状态压缩dp模板)题目291. 蒙德里安的梦想 - AcWing题库求把 N×M 的棋盘分割成若干个 1×2 的的长方形,有多少种方案。例如当 N=2,M=4时,共有 55 种方案。当 N=2,M=3 时,共有 33 种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数 N和 M。当输入用例 N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M≤原创 2021-11-18 15:42:12 · 840 阅读 · 0 评论 -
ccf第18次认证_3.化学方程式(Java)
ccf第18次认证_3.化学方程式化学方程式,也称为化学反应方程式,是用化学式表示化学反应的式子。给出一组化学方程式,请你编写程序判断每个方程式是否配平(也就是方程式中等号左右两边的元素种类和对应的原子个数是否相同)。本题给出的化学方程式由大小写字母、数字和符号(包括等号 =、加号 +、左圆括号 ( 和右圆括号 ))组成,不会出现其他字符(包括空白字符,如空格、制表符等)。化学方程式的格式与化学课本中的形式基本相同(化学式中表示元素原子个数的下标用正常文本,如 H2OH2O 写成 H2OH2O),用原创 2021-07-06 16:14:58 · 354 阅读 · 0 评论 -
太原理工大学2021数据结构课程设计(交通咨询系统(最短路径问题))
太原理工大学2021软件学院数据结构课程设计第三题(交通咨询系统(最短路径问题))核心代码(2021.6.6)声明:这里只是给出核心代码核心代码指程序的计算部分,不是完整程序背景题目给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,所有边权均为正值。请你求出 i号点到 j 号点的最短距离,如果无法从 i 号点走到 j 号点,则输出 −1。输入格式第一行包含三个整数n,m,k接下来 m 行每行包含三个整数x,y,z,表示存在一条从点 x 到点 y的有向边,边长为 z。接下来k行,原创 2021-06-06 23:05:24 · 3252 阅读 · 5 评论 -
太原理工大学2021数据结构课程设计(构造可以使n个城市连接的最小生成树)
太原理工大学2021软件学院数据结构课程设计第二题(构造可以使n个城市连接的最小生成树)核心代码(2021.6.6)声明:这里只是给出核心代码核心代码指程序的计算部分,不是完整程序题目背景:P3366 【模板】最小生成树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题目题目描述如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。输入格式第一行包含两个整数 N,M,表示该图共有 N 个结点和 M 条无向边。接下来 M 行每行包含三个整数xi,yi,zi,原创 2021-06-06 22:25:31 · 4342 阅读 · 3 评论 -
中兴2021面试题——序列最大收益(动态规划)
序列最大收益 题目 提交记录 讨论 题解 视频讲解给定一个长度为 mm 的整数序列 a1,a2,…,am。序列中每个元素的值ai 均满足 1≤ai≤n。当一个值为 ii 的元素和一个值为 j的元素相邻时,可以产生的收益为wi,j。现在,我们可以从序列中删除最多 kk 个元素,删除一些元素后,原本不相邻的元素可能会变得相邻。序列的收益和为所有相邻元素对产生的收益之和,例如一个长度为 3 的整数序列 1,3,2 的收益和为 w1,3+w3,2。请问,通过利用删除操作,能够得到原创 2021-05-12 21:27:02 · 257 阅读 · 0 评论 -
leetcode1473. 粉刷房子 III(超难的三维dp问题)
1473. 粉刷房子 III题目在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n )。有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色。我们将连续相同颜色尽可能多的房子称为一个街区。(比方说 houses = [1,2,2,3,3,2,1,1] ,它包含 5 个街区 [{1}, {2,2}, {3,3}, {2}, {1,1}] 。)给你一个数组 houses ,一个 m * n 的矩阵 cost 和一个整数 target ,其中:原创 2021-05-05 03:06:21 · 234 阅读 · 0 评论 -
leetcode740. 删除并获得点数(线性相邻dp问题)
740. 删除并获得点数给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2]输出:6解释:删除 4 获得 4 个点数,因此 3 也被删除。之后,删除 2 获得 2 个点数。总共获得 6 个点数。示例 2:输入:nu原创 2021-05-05 03:04:48 · 521 阅读 · 0 评论 -
一个堪比模板题的路径问题的动态规划leetcode403青蛙过河
一个堪比模板题的路径问题的动态规划题目403. 青蛙过河一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离原创 2021-04-30 00:16:13 · 104 阅读 · 0 评论 -
动态规划问题类型二(求方案数)
动态规划问题类型二(求方案数)动态规划类型一:背包系列问题最长上升子序列 题目 提交记录 讨论 题解 视频讲解给定一个长度为 NN 的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含 N 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4题解/**原创 2021-04-29 20:52:36 · 433 阅读 · 0 评论 -
剪绳子(浮点数二分+check)
剪绳子(浮点数二分+check) 题目 提交记录 讨论 题解 视频讲解有 NN 根绳子,第 ii 根绳子长度为 LiLi,现在需要 MM 根等长的绳子,你可以对 NN 根绳子进行任意裁剪(不能拼接),请你帮忙计算出这 MM 根绳子最长的长度是多少。输入格式第一行包含 22 个正整数 N、MN、M,表示原始绳子的数量和需求绳子的数量。第二行包含 NN 个整数,其中第 ii 个整数 LiLi 表示第 ii 根绳子的长度。输出格式输出一个数字,表示裁剪后最长的长度,保留两位小数原创 2021-04-26 20:50:33 · 167 阅读 · 0 评论 -
CCF202104 (第22次能力认证)java题解
CCF202104 (第22次能力认证)java题解题目一:灰度直方图问题描述一幅长宽分别为 n 个像素和 m 个像素的灰度图像可以表示为一个 n×m 大小的矩阵 A。其中每个元素 Aij(0≤i<n、0≤j<m)是一个 [0,L) 范围内的整数,表示对应位置像素的灰度值。具体来说,一个 8 比特的灰度图像中每个像素的灰度范围是 [0,128)。一副灰度图像的灰度统计直方图(以下简称“直方图”)可以表示为一个长度为 L 的数组 h,其中 h[x](0≤x<L)表示该图像中灰度值原创 2021-04-22 18:29:24 · 1084 阅读 · 0 评论 -
01背包问题详解Java(手写笔记)(超详细)
有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vivi,价值是 wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<N,V≤10000原创 2021-04-16 01:17:29 · 925 阅读 · 0 评论 -
完全背包问题(Java)
题目描述有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000样例10 100原创 2021-04-16 00:14:31 · 1009 阅读 · 1 评论 -
二分法题型与相似题目通用解法总结 leetcode 33、81、153、154 搜索旋转排序数组系列题
算法刷题笔记——day8前言近期leetcode每日一题连续三天都出了二分相关的问题本文章对几道题做了一个整合题解非原创,原创是leetcode大佬**宫水三叶**,我只是做整合原文链接「二分」相关题解二分模板29. 两数相除 : 二分 + 倍增乘法解法(含模板)二分本质 & 恢复二段性处理33. 搜索旋转排序数组(找目标值) : 严格 O(logN),一起看清二分的本质81. 搜索旋转排序数组 II(找目标值) : 详解为何元素相同会导致 O(n),一起看清二分的本质原创 2021-04-10 02:17:15 · 445 阅读 · 0 评论 -
leetcode 80、leetcode 26、删除数组中的重复项
算法刷题笔记——day7题目一26. 删除有序数组中的重复项难度简单1935收藏分享切换为英文接收动态反馈给你一个有序数组 nums ,请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以**「引用」**方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:原创 2021-04-07 11:23:24 · 155 阅读 · 0 评论 -
二叉树的遍历(前、中、后序)递归版和非递归版(用一个栈实现)
算法刷题笔记——day6二叉树的遍历package 树的前中后序遍历栈结构;import java.util.Stack;public class PreInPosTraversal { static class Node { public int value; public Node lChild; public Node rChild; public Node(int value) { thi原创 2021-04-06 13:00:03 · 289 阅读 · 0 评论 -
leetcode 42 接雨水 Java
算法刷题笔记——day542. 接雨水难度困难2226收藏分享切换为英文接收动态反馈给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2:输入:height = [4,2,0,3,2,5]输出:原创 2021-04-05 20:04:53 · 196 阅读 · 0 评论 -
Java用数组实现栈和队列
算法刷题笔记-day4(数据结构基础)用数组实现基本的队列和栈及其常用方法/** * 用数组结构实现大小固定的队列和栈 */public class dataStructure { /** * 用数组实现了栈结构; */ public static class ArrayStack { private Integer[] arr; //用size记录栈内元素个数的情况 private Integer size;原创 2021-04-04 02:07:25 · 230 阅读 · 0 评论 -
java 排序算法大全
算法刷题笔记—day3排序算法总结package 排序算法;import java.util.Arrays;public class mySort { /** * 选择排序 * * @param arr * @return */ public static void chooseSort(int[] arr) { if (arr == null || arr.length < 2) {原创 2021-03-31 22:58:55 · 180 阅读 · 0 评论 -
leetcode 190 颠倒二进制位 Java
算法刷题笔记—day2题目190. 颠倒二进制位难度简单371收藏分享切换为英文接收动态反馈颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -10737418原创 2021-03-31 22:32:24 · 174 阅读 · 0 评论 -
AcWing-77 翻转句子
算法刷题笔记:题目一AcWing-77输入一个英文句子,单词之间用一个空格隔开,且句首和句尾没有多余空格。翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。样例输入:"I am a student."输出:"student. a am I"package 翻转单词顺序;public class reverseWords剑指offer58a {原创 2021-03-31 11:20:28 · 315 阅读 · 0 评论