
算法
文章平均质量分 56
DChuancey
这个作者很懒,什么都没留下…
展开
-
使用C++实现一个AVL树(泛型AVL类)
实现AVL树的构建、插入结点、删除结点、AVL树的销毁等操作,已通过100条样例测试。第n个字符串有三种类型:PRE、IN、POST,分别代表最后AVL树以什么顺序输出。输出按照输入说明的输出格式打印AVL树,如果AVL树是空,打印EMPTY。原创 2023-04-26 14:21:29 · 197 阅读 · 0 评论 -
【动态规划1】动态规划的引入 练习笔记
【动态规划1】动态规划的引入题目链接:https://www.luogu.com.cn/training/211#problemsT1 数字三角形 Number Triangles题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的样例中,从 7 -原创 2021-03-10 10:30:48 · 378 阅读 · 0 评论 -
求最长上升子序列LIS(两种解法)+ LCS向LIS问题的转化
概念Loggest Increasing Subsequence:最长上升子序列Loggest Common Subsequnce: 最长公共子序列(两个或多个序列的问题)概念就不解释了,,,大家应该都懂解法O(nlog(n))的解法这种解法是贪心+二分的思想。实际并不难,比下面的O(n^2)复杂度的解法还更容易理解。这种算法的思想大致如下:现在有 4 2 3...原创 2020-04-16 20:09:59 · 406 阅读 · 0 评论 -
归并排序思想的应用:求逆序对
前言学了这么久的归并排序,感觉没什么卵用。。。。而且STL中有sort这么强大的工具,归并排序早就吃灰了先回顾下什么是归并排序要想知道什么是归并排序,先看看什么是归并举个例子:将两个已经排好序(例如从小到大)的数组合并成一个有序数组,要求时间复杂度O(n)用two-pointer的思想很好解决,用一个pointer指向第一个数组,另一个指向第二个数组,比较两个pointer所指...原创 2020-04-13 15:08:56 · 265 阅读 · 0 评论 -
用动态规划秒掉一道拓朴排序题目
题目如下题目描述John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。比如:只有将奶牛赶进牛棚才能开始为它清洗乳房,还有在未给奶牛清洗乳房之前不能挤奶。我们把这些工作称为完...原创 2020-04-08 18:18:10 · 316 阅读 · 0 评论 -
Tarjan缩点算法的简单应用
前言这破题目害老子写了一下午,还好总算写出来了,用到的是Tarjan算法不懂Tarjan算法的童鞋,强烈安利B站一位UP主的讲解视频,大神请绕路像我这种蒟蒻只有看视频听人家讲解才能会,自学算法好苦逼,看博客讲解真他妈费劲视频链接在此:轻松掌握Tarjan算法,我一遍就完全懂了,强烈安利哦,建议学会Tarjan算法再来看此题.题目如下原题链接题目描述给出N个...原创 2020-04-07 18:03:56 · 317 阅读 · 0 评论 -
记一道简单的离散化并查集
题目如下题目背景现代的人对于本家族血统越来越感兴趣。题目描述给出充足的父子关系,请你编写程序找到某个人的最早的祖先。输入格式输入由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系中父亲只有一行,儿子可能有若干行,用#name的形式描写一组父子关系中的父亲的名字,用+name的形式描写一组父子关系中的儿子的名字;接下来用?name的形式表示要求该人的最...原创 2020-04-06 16:21:23 · 166 阅读 · 0 评论 -
带路径压缩的并查集C/C++模板
拿下面一道入门并查集的题作为例子重点在于father数组、getFather函数、union函数这篇博文的目的是记录下并查集的模板!题目背景若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。题目描述规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y...原创 2020-04-03 17:14:47 · 215 阅读 · 0 评论 -
由中序序列和后序序列得到先序序列
上篇写了个用先序序列和中序序列的题目写的有点繁琐,这次来个简洁点的。题目如下题目描述给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度\le 8≤8)。输入格式22行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。输出格式11行,表示一棵二叉树的先序。输入输出样例输入 #1复制BADCBD...原创 2020-04-02 17:14:53 · 758 阅读 · 0 评论 -
用先序序列和中序序列创建二叉树
题目描述输入格式第一行: 树的中序遍历第二行: 同样的树的前序遍历输出格式单独的一行表示该树的后序遍历。输入输出样例输入 #1复制ABEDFCHGCBADEFGH 输出 #1复制AEFDBHGC模板如下:重在partition的过程,参数极容易出错#include <bits/stdc++.h>using namespace ...原创 2020-03-31 21:45:55 · 849 阅读 · 0 评论 -
数据结构----栈的练习(打基础的好题目)
题目如下题目描述给出两个序列 pushed 和 poped 两个序列,其取值从 1 到n(n≤100000)。已知入栈序列是 pushed,如果出栈序列有可能是 poped,则输出Yes,否则输出No。为了防止骗分,每个测试点有多组数据。输入格式第一行一个整数qq,询问次数。接下来qq个询问,对于每个询问:第一行一个整数nn表示序列长度;第二行nn个...原创 2020-03-31 14:05:59 · 504 阅读 · 0 评论 -
P2404 自然数的拆分问题(DFS)
题目如下题目描述任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。现在给你一个自然数n,要求你求出n的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。输入格式输入:待拆分的自然数n。输出格式输出:若干数的加法式子。输入输出样例输入 #1复制7输出 #1复制1+1+1+1...原创 2020-03-26 15:33:49 · 942 阅读 · 0 评论 -
算法训练:考前临时抱佛脚(搜索/DP/背包)
题目如下csdn效果显示不好,原题目链接:洛谷P2392题目背景kkksc03 的大学生活非常的颓废,平时根本不学习。但是,临近期末考试,他必须要开始抱佛脚,以求不挂科。题目描述这次期末考试,kkksc03 需要考44科。因此要开始刷习题集,每科都有一个习题集,分别有s_1,s_2,s_3,s_4s1,s2,s3,s4道题目,完成每道题目需要一些时间,可能不等。...原创 2020-03-25 18:02:49 · 1279 阅读 · 0 评论 -
二分查找算法之STL中lowerbound的妙用
题目背景计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是v神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。题目描述现有m(m\le100000)m(m≤100000)所学校,每所学校预计分数线是a_i(a_i\le10^6)ai...原创 2020-03-24 18:33:08 · 474 阅读 · 0 评论 -
贪心算法 铺路
题目描述春春是一名道路工程师,负责铺设一条长度为nn的道路。铺设道路的主要工作是填平下陷的地表。整段道路可以看作是nn块首尾相连的区域,一开始,第ii块区域下陷的深度为d_idi。春春每天可以选择一段连续区间[L,R][L,R],填充这段区间中的每块区域,让其下陷深度减少11。在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为00。春春希望你能...原创 2020-03-21 18:36:25 · 990 阅读 · 2 评论 -
贪心算法 删数问题
题目描述键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小。输入格式nn(高精度的正整数)kk(需要删除的数字个数)输出格式最后剩下的最小数。输入输出样例输入 #1复制175438 4输出 #1复制13...原创 2020-03-21 16:40:36 · 1310 阅读 · 0 评论 -
算法练习 递归 外星密码问题
题目描述有了防护伞,并不能完全避免 2012 的灾难。地球防卫小队决定去求助外星种族的帮 助。经过很长时间的努力,小队终于收到了外星生命的回信。但是外星人发过来的却是一 串密码。只有解开密码,才能知道外星人给的准确回复。解开密码的第一道工序就是解压 缩密码,外星人对于连续的若干个相同的子串“X”会压缩为“[DX]”的形式(D 是一个整 数且 1≤D≤99),比如说字符串“CBCBCBCB”就压...原创 2020-03-16 21:46:51 · 679 阅读 · 0 评论 -
用矩阵幂运算计算N的阶乘
我采用矩阵幂运算的思想,计算了N的阶乘。N小于1000都可计算问题描述 输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。输入格式 输入包含一个正整数n,n<=1000。输出格式 输出n!的准确值。样例输入10样例输出3628800想法:- 直接用整数表示,肯定不够用。32位的int类型好像最多只能表示到12...原创 2020-03-11 15:13:53 · 3272 阅读 · 0 评论 -
归并排序和无序数组的归并排序
一、将两个有序数组归并排序#include <stdio.h>#include <stdlib.h>int main(){ int a[5],b[8],c[13]; //不失一般性,两个数组的长度不一样长 int i,j,k,flag=0; for(i=0;i<5;i++) { scanf("%d",&a[i]); //按排好序...原创 2018-11-21 21:47:36 · 1050 阅读 · 0 评论 -
基础算法—-辗转相除求最大公约数
题目背景约数如果数 a 能被数 b 整除,a 就叫做 b 的倍数,b 就叫做 a 的约数。最大公约数最大公约数就是两个数中,大家都能相约且最大的数。辗转相除法辗转相除法又名欧几里得算法(Euclidean algorithm),目的是求出两个正整数的最大公约数。它是已知最古老的算法,其可追溯至公元前300年前。这条算法基于一个定理:两个正整数 a 和 b(a 大于 b)...原创 2018-11-20 22:29:12 · 8275 阅读 · 0 评论