经典算法
文章平均质量分 91
君只见独不见
这个作者很懒,什么都没留下…
展开
-
二叉树的常用操作
二叉树的构建:递归构建层次构建二叉树的遍历先序遍历后序遍历中序遍历深度最大深度 (递归、层次遍历)最小深度 (广度优先搜索)节点统计总节点数叶子节点数/*10 6 14 0 0 12 16 8 0 0 0 0 03 9 20 0 0 15 7 0 0 0 01 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 0*/#include <io...原创 2019-09-07 11:15:23 · 292 阅读 · 0 评论 -
强连通Tarjan NYOJ 120 校园网络
校园网络时间限制:3000 ms | 内存限制:65535 KB难度:5描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一些其它的系复制并使用该软件。但该允许关系是单向的,即:A系允许B系使用A的软件时,B未必一定允许A使用B的软件。现在,请你写一个程序,根据各个系之间达成的协议情况,计算出最少原创 2016-05-27 15:17:10 · 555 阅读 · 0 评论 -
矩阵连乘
一、问题描述 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵的连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连原创 2016-04-18 19:40:23 · 810 阅读 · 0 评论 -
nyoj 10 skiing(DAG上的最长路,备忘录方法)
skiing时间限制:3000 ms | 内存限制:65535 KB难度:5描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 5原创 2016-05-12 17:44:18 · 638 阅读 · 0 评论 -
nyoj 16 矩形嵌套 (DAG上的DP)
矩形嵌套时间限制:3000 ms | 内存限制:65535 KB难度:4描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌原创 2016-05-12 17:07:18 · 309 阅读 · 0 评论 -
POJ 3259 Wormholes (SPFA&&BellMan Ford)
Wormholes Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 4 Accepted Submission(s) : 3Problem DescriptionWhile exploring his many far原创 2016-05-01 13:27:41 · 402 阅读 · 0 评论 -
HDUOJ Highways (最小生成树)
Highways Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 18 Accepted Submission(s) : 6Problem DescriptionThe island nation of Flatopia原创 2016-05-01 13:19:44 · 344 阅读 · 0 评论 -
HDUOJ1864最大报销额(01背包)
最大报销额Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 6 Accepted Submission(s) : 3Problem Description现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(原创 2016-05-01 13:17:04 · 351 阅读 · 0 评论 -
POJ3278Catch That Cow(BFS)
Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 70652 Accepted: 22216DescriptionFarmer John has been informed of the location of a fug原创 2016-05-01 13:12:54 · 317 阅读 · 0 评论 -
贪心算法之——过河问题(nyoj47)
问题:过河问题时间限制:1000 ms | 内存限制:65535 KB难度:5描述在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走原创 2015-04-19 22:37:10 · 1803 阅读 · 0 评论 -
poj 1692 Crossed Matchings(DP)
Crossed MatchingsTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 2717Accepted: 1763DescriptionThere are two rows of positive integer numbers. We ca原创 2016-05-10 00:16:14 · 942 阅读 · 0 评论 -
hduoj 1024 Max Sum Plus Plus(最大m子段和)
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24192 Accepted Submission(s): 8289Problem DescriptionNow I t原创 2016-05-10 00:34:10 · 837 阅读 · 0 评论 -
入门-动态规划
1. [分梨]2. 最大公共子序列3. [最大子段和]4. [最大子阵和]5. [母牛的故事]6. [数塔]7. [一只小蜜蜂]8. [折线分割平面]9. [献给杭电五十周年]原创 2019-04-15 23:13:36 · 369 阅读 · 0 评论 -
入门-贪心算法
入门-贪心算法1. 看电视解析题目链接 [看电视](http://acm.zzu.edu.cn/problem.php?id=1160)代码2. 出租车费题目链接 [出租车费](http://acm.zzu.edu.cn/problem.php?id=1161)代码3. 迷障题目链接 [迷障](http://acm.zzu.edu.cn/problem.php?id=1196)解析代码4. 均分纸...原创 2019-04-11 22:43:24 · 705 阅读 · 0 评论 -
入门-线段树
题目描述老师想知道从某某同学到某某同学当中,分数最高的是多少。现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。输入输入包含多组测试数据。每组输入第一行是两个正整数N和M(0<N<=30000,0<M<5000),分表代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学...原创 2019-04-11 09:37:54 · 256 阅读 · 0 评论 -
LeetCode 螺旋矩阵(Spiral Matrix)
思路:做四个方向的遍历右,下,左,上。重复循环这四个方向即得到螺旋矩阵。注意问题:1、边界2、判断当前位置是否已经遍历(mark标志位)3、vector为空或者只有一个元素4、循环退出条件class Solution {public: vector<int> spiralOrder(vector<vector<int>>&...原创 2018-09-21 11:06:37 · 261 阅读 · 0 评论 -
经典算法——KMP模式匹配
对于一个串中某个子串的定位操作称为串的模式匹配,其中待定的子串称为模式串。算法的基本思想:从主串的第一个位置起和模式串的第一个字符开始比较,如果想等,则继续逐一比较后续字符;否则从主串的第二个字符开始,在重新用上一步的方法与模式串中的字符比较,以此类推,知道比较完模式串的所有字符。若匹配成功,则返回模式串在主串中的位置;若匹配不成功,则返回一个可区别与主串所有位置的标记,如“-1”,这是最简单的模原创 2016-09-21 11:32:50 · 460 阅读 · 0 评论 -
贪心算法之——摘枇杷(nyoj680)(贪心+二分搜索)
问题:摘枇杷时间限制:2000 ms | 内存限制:65535 KB难度:3描述理工学院的枇杷快熟了,ok,大家都懂得。而且大家都知道,学校的枇杷树都是一列一列的。现在小Y同学已经在筹划怎么摘枇杷了。现在我们假设有一列枇杷树,而且每棵枇杷树上枇杷果的数量小Y都已经知道了。假设现在有n棵枇杷树,小Y可以把这n棵枇杷树分成m组,每组枇原创 2015-04-23 20:37:38 · 1227 阅读 · 0 评论 -
NYOJ 115 城市平乱(图论Dijkstra)
城市平乱时间限制:1000 ms | 内存限制:65535 KB难度:4描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱。现在已知在任意两个城市之间的路行军所需的时间原创 2016-05-21 18:03:47 · 677 阅读 · 0 评论 -
nyoj 61 传纸条(一) (双线动归)&nyoj 探寻宝藏
传纸条(一)时间限制:2000 ms | 内存限制:65535 KB难度:5描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小原创 2016-05-13 22:37:40 · 1053 阅读 · 0 评论 -
动态规划之-----单调递增最长子序列(nyoj17)
单调递增最长子序列时间限制:3000 ms | 内存限制:65535 KB难度:4描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入3aaaababcabklmncdefg样原创 2016-04-08 00:03:17 · 737 阅读 · 0 评论 -
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则 将出现一个回路;若去掉一条边,将会使之编程非连通图。生成树各边的权 值总和称为原创 2016-03-15 16:18:21 · 649 阅读 · 0 评论 -
nylgACM_105_九的余数
题目105题目信息运行结果本题排行讨论区九的余数时间限制:3000 ms | 内存限制:65535 KB难度:3描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。输入第一行有一个整数m(1随后m行每行有一个自然数n。输出输出n整除九之后的余数,每次输出占一行。样例输入345原创 2014-11-16 20:16:06 · 873 阅读 · 0 评论 -
贪心算法之——会场安排(nyoj14)
会场安排问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。输入第一行是一个整型数m(m每组原创 2015-03-16 22:38:09 · 573 阅读 · 0 评论 -
贪心算法之——阶乘之和(nyoj91)
阶乘之和时间限制:3000 ms | 内存限制:65535 KB难度:3描述给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No;输入第一行有一个整数0每组测试数据有一个正整数n输出如果符合条件,输出Yes,否则输出No(注意大小写);样例输入2910原创 2015-03-17 11:10:36 · 4011 阅读 · 0 评论 -
贪心算法之——背包问题(nyoj106)
背包问题时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。输入第一行输入一个正整数n(1随后有n测试数原创 2015-03-17 12:41:00 · 1059 阅读 · 0 评论 -
动态规划之——又见拦截导弹(nyoj814)
问题描述:又见拦截导弹时间限制:3000 ms | 内存限制:65535 KB难度:3描述大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。突然有一天,雷达捕捉到敌国的导原创 2015-04-28 22:37:55 · 4920 阅读 · 1 评论 -
八皇后
说明:西洋棋中的皇后可以直线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上,1970年与1971年, E.W.Dijkstra与N.Wirth曾经用这个问题来讲解程式设计之技巧。解法:关于棋盘的问题,都可以用递归求解,然而如何减少递归的次数?在八个皇后的问题中,不必要所有的格子都检查过,例如若某列检查过,该该列的其它格子就不用再检查了,这个方法称为分支修原创 2014-11-25 21:18:38 · 518 阅读 · 0 评论 -
贪心算法之——喷水装置二(nyoj12)
题目描述:喷水装置(二)时间限制:3000 ms | 内存限制:65535 KB难度:4描述有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。输入第一行输入原创 2015-04-26 15:33:25 · 1041 阅读 · 0 评论 -
穷举递归和回溯算法
穷举递归和回溯算法在一般的递归函数中,如二分查找、反转文件等,在每个决策点只需要调用一个递归(比如在二分查找,在每个节点我们只需要选择递归左子树或者右子树),在这样的递归调用中,递归调用形成了一个线性结构,而算法的性能取决于调用函数的栈深度。比如对于反转文件,调用栈的深度等于文件的大小;再比如二分查找,递归深度为O(nlogn),这两类递归调用都非常高效。现在考虑子集问题或者全转载 2015-03-22 22:27:12 · 1439 阅读 · 0 评论 -
贪心算法之——独木舟上的旅行(nyoj71)
独木舟上的旅行时间限制:3000 ms | 内存限制:65535 KB难度:2描述进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的原创 2015-03-16 23:42:05 · 909 阅读 · 2 评论 -
nylgacm_1057_寻找最大数(三)
描述给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。求这个新的整数的最大值是多少。输入多组测试数据。每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).输出每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。样例输入1990 1100 09090000078001234 6...原创 2014-11-08 22:15:02 · 973 阅读 · 0 评论 -
五大常用算法之一:分治算法
(转自红脸书生)一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……任何一个可以用计算机求解的问题所需的计算时间都与其规模有关转载 2015-11-03 22:30:31 · 590 阅读 · 0 评论 -
动态规划之----最长公共子序列
动态规划算法的基本要素:1)最优子结构 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。问题的最优子结构性质提供了该问题可用动态规划算法求解的最重要线索。 在动态规划算法中,利用问题的最优字结构的性质,以自底向上的方式递归的从子问题的最优解逐步构造出整个问题的最优解。2)重叠子问题 可用动态规划算法求解的问题应具备的另一基本原创 2016-04-07 23:47:05 · 805 阅读 · 0 评论 -
HDUOJ-2094-产生冠军
Problem Description有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。球赛的规则如下:如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了原创 2016-03-31 22:59:13 · 690 阅读 · 0 评论 -
贪心算法之——喷水装置一(nyoj6)
现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。原创 2015-03-16 21:29:10 · 718 阅读 · 0 评论 -
动态规划之——拦截导弹(nyoj79)
问题描述:拦截导弹时间限制:3000 ms | 内存限制:65535 KB难度:3描述某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能原创 2015-04-28 22:23:32 · 3423 阅读 · 0 评论 -
动态规划之——最长公共子序列(nyoj36)
问题描述:最长公共子序列时间限制:3000 ms | 内存限制:65535 KB难度:3描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知原创 2015-04-28 22:52:46 · 546 阅读 · 0 评论 -
五大常用算法之二:动态规划算法
五大常用算法之二:动态规划算法一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问转载 2015-12-11 09:45:56 · 412 阅读 · 0 评论 -
三种素数求法
(整理自网络) 素数是除了1和它本身之外再不能被其他数整除的自然数。由于找不到一个通项公式来表示所有的素数,所以对于数学家来说,素数一直是一个未解之谜。像著名的哥德巴赫猜想、孪生素数猜想,几百年来不知吸引了世界上多少优秀的数学家。尽管他们苦心钻研,呕心沥血,但至今仍然未见分晓。 求素数的方法有很多种,最简单朴素的方法是根据素数的定义来求。对于一个自然数N,用转载 2014-11-08 19:02:38 · 1188 阅读 · 0 评论