算法习题
文章平均质量分 54
算法类的博客
一枚研究生er
研究生er
展开
-
双指针应用
双指针应用原创 2022-09-15 19:50:39 · 806 阅读 · 1 评论 -
左神课堂---环形单链表的约瑟夫---进阶8视频
题目: 环形单链表的约瑟夫问题据说著名犹太历史学家Josephus有过以下故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,报数到3的人就自杀,然后再由下一个人重新报1,报数到3的人再自杀,这样依次下去,直到剩下最后一个人时,那个人可以自由选择自...原创 2018-11-27 09:15:12 · 354 阅读 · 0 评论 -
计算表达式的结果 双端队列结构的应用
题意:给定一个字符串str,str表示一个公式,公式里可能有整数、加减乘除符号和左右括号,返回公式的计算结果。【举例】str="48*((70-65)-43)+8*1",返回-1816。str="3+1*4",返回7。str="3+(1*4)",返回7。【说明】1.可以认为给定的字符串一定是正确的公式,即不需要对str做公式有效性检查。2.如果是负数,就需要用括号括起来,比...原创 2018-11-10 21:29:30 · 403 阅读 · 0 评论 -
关于二叉树的一类问题的解法 树形dp
通过题目来看解法例题一:给你一个二叉树,让你找出这个二叉树中最大的二叉搜索子树。思路:我们枚举以所有的点为头节点的二叉子树,对于枚举的每个二叉子树,我们都求出它的最大搜索二叉树,最后的答案就是以刚开始的节点为头节点的那个二叉树所求的最大搜索二叉树。对于每个节点,它的最大搜索二叉树的组成一共有三种情况:情况一:该节点的左子树中的最大搜索二叉树就是以该结点为头节点的二叉树的最大...原创 2018-10-28 15:04:30 · 254 阅读 · 0 评论 -
左神课堂 数组三连 进阶八视频
题目一题意:给你一串数字,然后给你一个数aim,让你求累加和为aim的长度最长的子串的长度。我们规定数字可正,可负,可零假如给你一串数字:1,0,0,0,0,7,-1,1,10,5aim等于7,那么最长的子串的长度是7,这个子串是:0,0,0,0,7,-1,1。累加和为7思路:我们枚举所有位置,假设我们枚举到了i位置,我们求以i位置为结束位置的满足条件的子串,然后定义一个l...原创 2018-10-28 09:48:58 · 273 阅读 · 0 评论 -
2018 icpc青岛赛区网络赛 H题
题目大意:Bao在数轴的间隔[0,n]上散步,但他不能自由移动,[1,n]处有n个路灯, 1代表绿灯可以行走,0代表红灯不能行走,Bao在每一秒可以做两件事情,事情一:判断路灯的颜色,如果是红灯,不走,如果是绿灯,走;事情二:将当前所有的路灯的颜色改变(0变1,1变0), 求出走所有路径所用的时间(只能从前往后走,可以从0开始走,但路灯从1处才开始有)(在一秒内可以做出两件事情,判断灯...原创 2018-09-17 12:13:31 · 377 阅读 · 0 评论 -
2018 ccpc 1004
题目:题目大意:给你a和n,让你找b和c,使得a,b,c,n 满足 a ^ n + b ^ n = c ^ n 这个等式。思路:还是一道数论的签到题,运用费马大定理和费马大定理奇偶数列定则来做。费马大定理:https://baike.baidu.com/item/%E8%B4%B9%E9%A9%AC%E5%A4%A7%E5%AE%9A%E7%90%86/80363费马...原创 2018-08-26 10:21:18 · 435 阅读 · 0 评论 -
2018 百度之星初赛b a题
度度熊最近似乎在研究图论。给定一个有 N 个点 (vertex) 以及 M 条边 (edge) 的无向简单图 (undirected simple graph),此图中保证没有任何圈 (cycle) 存在。现在你可以对此图依序进行以下的操作:移除至多 K 条边。 在保持此图是没有圈的无向简单图的条件下,自由的添加边至此图中。请问最后此图中度数 (degree) 最大的点的度数可以多大呢...原创 2018-08-13 10:04:31 · 268 阅读 · 0 评论 -
计蒜客暑假第一阶段第七场 d题
You're investigating what happened when one of your computer systems recently broke down. So far you've concluded that the system was overloaded; it looks like it couldn't handle the hailstorm of in...原创 2018-08-03 16:47:17 · 408 阅读 · 0 评论 -
计蒜客暑假第一阶段第六场 d题
Persona5 is a famous video game.In the game, you are going to build relationship with your friends.You have NN friends and each friends have his upper bound of relationship with you. Let's conside...原创 2018-08-02 15:02:00 · 269 阅读 · 0 评论 -
中国石油大学个人训练赛第七场 c题(floyd算法)
问题 C: Restoring Road Network时间限制: 1 Sec 内存限制: 128 MB提交: 940 解决: 206[提交] [状态] [讨论版] [命题人:admin]题目描述In Takahashi Kingdom, which once existed, there are N cities, and some pairs of cities are...原创 2018-08-01 10:03:52 · 252 阅读 · 0 评论 -
计蒜客暑假集训第一阶段第六场 j题 set
Let's consider some math problems.JSZKC has a set A=\{1,2,...,N\}A={1,2,...,N}. He defines a subset of AA as 'Meo set' if there doesn't exist two integers in this subset with difference one. For exa...原创 2018-07-31 10:00:31 · 216 阅读 · 0 评论 -
计蒜客暑假集训第一阶段第五场 d题
Do you like number pyramids? Given a number sequence that represents the base, you are usually supposed to build the rest of the "pyramid" bottom-up: For each pair of adjacent numbers, you would compu...原创 2018-07-30 11:20:59 · 326 阅读 · 0 评论 -
计蒜客暑假集训第一阶段第四场 b题
Bahiyyah has a convex polygon with nn vertices P_0, P_1, \cdots, P_{n-1}P0,P1,⋯,Pn−1 in the counterclockwise order.Two vertices with consecutive indexes are adjacent, and besides, P_0P0 and P_{n-1...原创 2018-07-29 15:46:01 · 654 阅读 · 0 评论 -
中国石油大学个人训练赛第五场 e题
题目描述We have a board with a 2×N grid. Snuke covered the board with N dominoes without overlaps. Here, a domino can cover a 1×2 or 2×1 square.Then, Snuke decided to paint these dominoes using three c...原创 2018-07-28 16:22:20 · 275 阅读 · 0 评论 -
计蒜客暑假集训第一阶段第四场 h题
It is my great honour to introduce myself to you here.My name is Aloysius Benjy Cobweb Dartagnan Egbert Felix Gaspar Humbert Ignatius Jayden Kasper Leroy Maximilian.As a storyteller, today I decide to...原创 2018-07-28 15:33:50 · 554 阅读 · 0 评论 -
计蒜客暑假集训第一阶段第四场 d题
Duha decided to have a trip to Singapore by plane.The airplane had nn seats numbered from 11 to nn, and nn passengers including Duha which were also counted from 11 to nn.The passenger with number i...原创 2018-07-27 16:39:38 · 609 阅读 · 0 评论 -
中国石油大学个人训练赛第三场 b题 庭师的利刃
问题 B: 庭师的利刃时间限制: 1 Sec 内存限制: 128 MB提交: 623 解决: 181[提交] [状态] [讨论版] [命题人:admin] 题目描述作为白玉楼的庭师,妖梦虽然不会n刀流,但是却领悟了生命二刀流。然而我也是个剑的收藏者,家里屯着n把剑,每一把剑都有一个灵魂值a[i],由于一些剑之间可能有共鸣,所以我需要两把契合度最高的剑。据妖梦所说,两把编号为...原创 2018-07-23 16:19:28 · 297 阅读 · 0 评论 -
计蒜客暑假集训第一阶段第五场 f题
Emma just discovered a new card game called Gwint: A wizard’s game. There are two types of cards: monster cards and spell cards. Monster cards are used to score points, while spell cards typically int...原创 2018-07-23 11:05:17 · 437 阅读 · 1 评论 -
计蒜客暑假集训第一阶段第5场 c题
John loves winter. Every skiing season he goes heli-skiing with his friends. To do so, they rent a helicopter that flies them directly to any mountain in the Alps. From there they follow the picturesq...原创 2018-07-21 17:11:14 · 406 阅读 · 0 评论 -
计蒜客暑假集训第4场-----第一题 题目解析 注意事项
题目链接:https://nanti.jisuanke.com/t/28401题目大意:现在有一个栈,初始为空。接下来有若干次操作,每次可能向栈顶 push 一个正整数,也可能 pop 掉 栈顶元素。你需要在每次操作之后计算出栈内所有元素的最大值。如果栈为空则认为此时最大值是 0。 为了避免输入文件过大,所有操作会使用 rng61 算法生成。同时为了避免输出文件过大,你只需要 输出一个数...原创 2018-07-18 16:55:34 · 378 阅读 · 0 评论 -
暴力递归转动态规划---1
题目一:题意:给定一个地图,每个位置上都有权值,你从地图的左上角开始走,走到右下角,让你找出所有路径中权值和最小的 一条路。题目分析:我们假顶walk( i , j )函数所代表的意思是地图上( i , j )这个点到右下角的最短距离,那么我们就可以写递归函数了,直接看代码代码如下:#include<bits/stdc++.h>#define MAXN 99...原创 2018-06-24 20:50:52 · 473 阅读 · 0 评论 -
左神课堂之贪心题目
题目一:题意:一块金条切成两半,是需要花费和长度数值相同的铜板的,比如长度为20的金条,不管切成长度为多大的两半,都需要花费20个铜板,一群人想整分整块金条,怎么分最省铜板?例如:给定数组【10,20,30】,代表一共三个人,整块金条的长度为10+20+30=60,金条要分成10,20,30三个部分。如果,先把长度为60的金条分成10和50,花费60,在办长度为50的金条分成20和30...原创 2018-06-20 18:39:06 · 338 阅读 · 0 评论 -
求完全二叉树节点的个数 时间复杂度不能大于O(n)
首先知道一个公式:如果一棵二叉树为满二叉树,那么该满二叉树的节点个数为(2^h)-1,其中h为该满二叉树的高度。我们利用这一个公式来实现求完全二叉树的节点的个数,并且时间复杂度不大于O(n)。算法原理:通过寻找整棵二叉树的满二叉子树,找到后直接运用公式求该满二叉子树的节点个数。这样就省去了遍历二叉树的时间,使算法的时间复杂度降低。算法流程:我们以下图为例讲: ...原创 2018-05-29 19:32:57 · 2960 阅读 · 0 评论 -
左神课堂之运用链表解决荷兰国旗问题,要求时间复杂度为o(n),空间复杂度为o(1),还要实现稳定性
荷兰国旗问题描述:给定一个数n,表示一串数的个数。然后给定一个数number。接着输入n个数,请你设计一个算法,将所有这串数字中比number小的数放在左边,等于number的数放在中间,大于number的数放在右边。示例:输入:5 11 5 2 4 0输出:0 1 4 2 5基本思路:构建3个链表,less1,cur,more。less1链表中存放的是所有小于numbe...原创 2018-05-12 11:24:54 · 1106 阅读 · 0 评论 -
左程云算法初级课 在排好序的矩阵中找数问题 题目解析和代码实现 宏观调度问题
题目描述:在已经排好序的矩阵中找出指定的数,并输出他在矩阵中的位置排好序的矩阵:从左到右,从上到下依次都是递增的。基本思路:设置一个点a,从数组的右上位置开始出发,通过比较a位置上的数和给定数的大小关系来确定a点接下来应该往哪个方向走。如果a位置上的数大于给定的数,那么a应该往左走。假设用上图为例,假设给定的需要求的数是8,那么开始时a应该在13位置,13大于8,那么a...原创 2018-05-05 17:16:54 · 785 阅读 · 0 评论 -
左神课堂---之字形打印矩阵------宏观调度思想
题目描述:给定一个矩阵,要求按之字形打印出矩阵。那么打印顺序为:1 2 5 9 6 3 4 7 10 11 8 12基本思路:定义两个点a,b。刚开始时a点和b点都在(0,0)位置,然后a点往右走,b点往下走,当a点碰到最右边时,a点往下走,当b点碰到最下边时,b点往右走。每走一次,就打印a点,b点对角线上的数字。然后在定义一个bool类型的变量来判断是从右上到左下打印还是从左...原创 2018-05-04 09:45:15 · 230 阅读 · 0 评论 -
左神算法初级班3中运用堆结构求解的那个问题 题解
题目描述:有一个容器,一次吐出数字,让你求给定任意时刻所吐出来的数的中位数基本思路:分别建立一个大根堆和一个小根堆,用来维护排序后的数组小于中间数字的数(放入大根堆中)和大于中间数字的数(放入小根堆中),当大根堆和小根堆中数据个数相差大于1时,就让数据多的那个堆中的数跑到数据少中的那个堆中去,这样能够保证两个堆的堆顶的数始终是排序后数组最中间的两个数。为啥2个堆顶的数能够是排序后数组最...原创 2018-04-26 21:21:42 · 236 阅读 · 0 评论 -
洛谷 p1020 题解 求最长上升子序列的o(n*logn)算法
题目链接:https://www.luogu.org/problemnew/solution/P1020基本思路:首先第一问是一个求最长下降子序列的问题,但是不能用传统的方法,因为会超时。还有个比较蛋疼的地方就是输入的时候,没有指定输入数据的个数,这个我也不会 ,看了题解才知道那么输入的。首先,基本的思路还是和传统的求最长上升(下降)子序列一样的,都是求以i为结尾的最长上升(下降)子...原创 2018-04-25 19:38:09 · 572 阅读 · 0 评论 -
落谷 p1022计算器的改良 题目解析
题目链接:https://www.luogu.org/problem/show?pid=P1022基本思路:此题的主要难点在于字符的处理,我刚开始的思路是全部输入完成后在进行计算,但是发现,不对,因为我所写的程序是按照样例来写的,但是样例(6a-5+1=2a)给定的数字都是一个字符,所以不需要对数字进行累加,但是当我发现如果样例是(67a-5+1=24a)时,我的方法就不对了。果断放弃...原创 2018-04-23 14:20:32 · 258 阅读 · 0 评论 -
山东省2018届acm大赛最后一题题解 呜呜呜
思路:刚开始做的时候,我直接想的背包,没想到贪心,写完之后样例过了,但是,交到oj上就是过不了,难受。后来,才知道得贪心和背包一起用才行,贪心。基本思路,通过比较交叉相乘的大小来先排序,然后在用背包做,背包的横坐标表示件数,纵坐标表示时间。题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestpro...原创 2018-04-22 18:29:28 · 637 阅读 · 0 评论 -
洛谷 p1364 题解
思路:这是一道广搜的题目 题目本身不难 基本思路:先定义一个结构,结构中有4个参数,第一个表示人数,第二个表示该节点的左孩子,还有一个表示该节点的右孩子。最后一个表示这个节点的父节点,注意,这个父节点不是输入的,而是求出来的。定义一个函数来求每个节点的父节点。然后用一个for循环来遍历每个点,分别设置为起始节点,然后就是依次入队,出对,扩展节点 代码如下:#include&l...原创 2018-04-20 21:22:05 · 388 阅读 · 1 评论 -
洛谷 p1123取数游戏
定义一个dfs函数,函数有三个变量,分别是i,j,sum。i,j分别代表访问的这个点的坐标,sum表示这条路径上的数字的和。思路是:从(1,1)这个点进入,依次以先列数增加,然后行数增加在访问所有的点。代码如下#include<iostream>#include<algorithm>#include<cstring>using namespace std;int...原创 2018-04-19 20:49:23 · 702 阅读 · 4 评论 -
棋盘问题 题解
题目链接:http://poj.org/problem?id=1321思路:这题用dfs来解 dfs函数只有一个形参,那就是行数,因为题目中说了两个棋子不能放在一个棋盘的同一行或同一列,所以,一行只能选一个能放棋子的位置来放棋子。首先定义一个数组,visited用来记录第i列是否有棋子放入,注意 是第i列。然后定义一个全局变量way来记录已经往棋盘中放入了多少个棋子了,递归的边...原创 2018-04-19 20:01:02 · 9790 阅读 · 11 评论