ACM
九日王朝
技术是谋生的手段,而不是生命的全部。过分沉迷技术只会让人坠入深渊和绝望,人生应该追求的是智慧与认知。
与其劳碌拼搏匆匆过完一生,应该把更多的精力用于了解这个世界,锻造通透豁达的内心。才能得以善终。
展开
-
全排列及相关扩展算法(七)——组合数的字典序(另含全章代码整理)
1.引入概念:要列出一个集合{1,2,3,4}的所有子集是很容易的,我们可以按照二进制数的顺序,0000,0001,0010,0011,0100,0101,0110,0111......来表示我们要取的元素,其中0表示不取,1表示取,这样就获得了一个顺序。而组合也包含在这个顺序当中。我们看从{1,2,3,4}中选取两个元素的所有组合:0000 0001 0010 0011 0100 010原创 2017-08-18 18:24:15 · 1883 阅读 · 0 评论 -
全排列及相关扩展算法(六)——全排列最蛋疼的算法:邻位对换法
1.引入原因:在此之前我们实现全排列本质上都是采用单向交换的思路,当交换到末端便要回溯至上一层面,如果我们采用双向的交换,便可以不断地交换下去,于是产生了邻位对换法。邻位对换法在找下一个排列的方法上在很多情况下要比字典序算法要快上许多,因为每次的下一个排列只是交换两个相邻的元素,当然缺点就是到左端或者右端时要进行找最大可移动数的计算,故最终整体效率也没什么提升,所以称之为最蛋疼的全排列算法。原创 2017-08-18 18:07:43 · 2787 阅读 · 0 评论 -
全排列及相关扩展算法(五)——递增(递减)进位制数求原排列算法
1.引入原因:通过上一章我们意识到通过原始中介数求原排列并不是那么的方便,于是我们延伸出几种新的中介数算法来方便计算原排列。2.递增进位制数法:递增进位制是指数字的进制随着数字位置的不同递增,一般的,最右位的进制为2,向左依次增1。用递增进位制数法改造的中介数即:我们不按照从左到右的顺序排,而是按照数字的大小来排。以上一章{ 7,6,8,3,4,5,1,2 }为例,其原始中介数为{6,5,5,原创 2017-08-17 20:59:52 · 3831 阅读 · 0 评论 -
全排列及相关扩展算法(四)——原始中介数通过逆推求原排列算法
1.中介数逆推原排列:上一章我们讲到了中介数,通过一个排列可以很方便地求数它的中介数,通过中介数也可以很方便地求出排位序号。但是通过中介数逆推原排列就不是那么容易了。因为我们每求一位数,都需要对比其前面所有的数来获取他的定位,以上一章{ 3,4,5,6,7,2,1 }为例,得到的{2,2,2,2,2,1}中介数,第一位我们可以直接得出3,第二位本应也是3,但是考虑前面已经有3了,所以第二位就只能是4,以此类推……即:如果之前存在某排位i小于等于当前排位,那么当前排位所对应的数需要再加上1原创 2017-08-17 10:29:47 · 1990 阅读 · 0 评论 -
全排列及相关扩展算法(三)——利用中介数求排列在字典序排位算法
1.中介数的定义及作用:很多时候,我们要通过一个排列得出它的字典序中的位置(序号),比如1234567应该排在第0位(开始位),1234576应该排在第1位,7654321排在第7!-1=5039位。当然,我们可以通过计算Next_Permutation函数的迭代次数来得到这个数据,但这样时间复杂度最差为O(n!),是非常不划算的,因为我们仅仅要求一个数的位置。所以我们要先从数学的角度去计算这个问原创 2017-08-16 20:46:24 · 3688 阅读 · 0 评论 -
全排列及相关扩展算法(二)——求字典序下一组排列及全排列算法
1.字典序排列的定义:为了便于理解,以数字为例,对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。2.字典序排列解决思路:参考上文中(1,2,3,4)全排列的输出截图最后输原创 2017-08-16 16:33:14 · 1313 阅读 · 0 评论 -
全排列及相关扩展算法(一)——基础的回溯递归实现全排列算法
1.全排列的定义和公式: 从n个数中选取m(m2.时间复杂度: n个数(字符、对象)的全排列一共有n!种,所以全排列算法至少时O(n!)的。如果要对全排列进行输出,那么输出的时间要O(n*n!),因为每一个排列都有n个数据。所以实际上,全排列算法对大型的数据是无法处理的,而一般情况下也不会要求我们去遍历一个大型数据的全排列。3.全排列算法解决思路:假设现有1 2 3 三个数,我们构造全原创 2017-08-16 14:28:22 · 2803 阅读 · 0 评论 -
洛谷OJ上的A+B花(zhuang)式(bi)解法
转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然后……作者: Treeloveswater 更新时间: 2017-03-26 15:06 举报终于可以写一份A+B这么难的题的题解了。咦?竟然没有人写LCT的题解?转载 2017-07-28 16:26:40 · 2833 阅读 · 0 评论 -
小顶堆数据结构C/C++代码实现
相比队列和栈,很多人可能对堆的概念比较陌生,下面个给出堆的本质概念一、堆也是一种数据结构,从实际应用意义来说,他是一种最优级别数据永远在第一位的队列,本文皆以最小值为例(小顶堆),即它变相是一种会永远保持最小值先出队的队列。二、堆的本质是一颗完全二叉树,树根永远为整个树的最小值,这也就是实现了①永远保持最小值先出队的队列这样的功能。三、为了便于实现②树根为整个树的最小值,堆中某个节点的原创 2016-12-23 12:11:42 · 5927 阅读 · 0 评论 -
马拉车(manacher)算法——最长回文(hdu3068)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068题目描述:Problem Description给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等Input输入有多组case,不超过120组,每组输入为一行小写英文字原创 2016-12-16 13:53:39 · 774 阅读 · 0 评论 -
论算法的实际应用——泡妞论
我们都知道,算法,即解决问题的方法,我们衡量一个算法的优劣,可以用空间复杂度与时间复杂度来衡量。换做我们实际生活中,就是物质成本开销与时间成本开销。不同算法进行泡妞这一业务进行其物质成本开销与时间成本开销自然也不同。所以我们要根据自身情况,选取一个适合于自己的算法。当前也要适用于你的输入,也就是你的对象(强行面向对象思想)具体类型。一、博弈算法博弈的核心思想并不复杂,实原创 2016-12-08 17:27:29 · 6660 阅读 · 6 评论 -
字典树
字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接原创 2016-11-23 18:35:16 · 909 阅读 · 0 评论 -
红黑树
很多人认为红黑树很难懂,其实红黑树并没有我们想象中的那么难首先我们先看红黑树到底是干什么的红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实原创 2016-11-23 17:59:40 · 700 阅读 · 0 评论 -
线段树——操作格子(蓝桥杯试题集)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T18题目描述:有n个格子,从左到右放成一排,编号为1-n。共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n个整数表示n个格子的原创 2016-11-23 11:57:15 · 833 阅读 · 0 评论 -
回溯子集树与排列树——装载问题&旅行售货员问题(算法设计课题)
*对回溯法不是很理解的请移步博客http://blog.csdn.net/sm9sun/article/details/53244484掌握了回溯法以后,我们给出两种定义:当所给问题是从n个元素的集合S中找出满足某种性质的子集时,解空间为子集树。例如:0-1背包问题 当所给问题是从n个元素的集合S中找出满足某种性质的排列时,解空间为排列树。例如:旅行售货员问题原创 2016-11-22 18:24:14 · 4602 阅读 · 0 评论 -
最短路径——dj+floyd+spfa(hdu2544)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544问题描述:在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、原创 2016-11-22 17:04:57 · 866 阅读 · 0 评论 -
最短路径——SPFA算法(蓝桥杯试题集)
*对于本题的floyd题解请跳转:http://blog.csdn.net/sm9sun/article/details/53285870题目链接:http://lx.lanqiao.cn/problem.page?gpid=T15问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式原创 2016-11-22 15:56:15 · 4453 阅读 · 1 评论 -
最短路径——Floyd算法及优化(蓝桥杯试题集)
*对最短路径问题以及floyd算法、Dijkstra算法不是很理解的同学请移步前几篇博客~题目链接:http://lx.lanqiao.cn/problem.page?gpid=T15问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式第一行两个整数n, m。接下来的原创 2016-11-22 15:21:27 · 4839 阅读 · 1 评论 -
最短路径——Dijkstra算法扩展(hdu2066,poj1062)
*本文介绍了一些Dijkstra的变型例题,对Dijkstra算法不是很了解了可以移步上篇博客题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066题目描述:虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅原创 2016-11-22 12:28:58 · 819 阅读 · 0 评论 -
最短路径——Dijkstra算法HDU Today(hdu2112)
关于本题的floyd解法:http://blog.csdn.net/sm9sun/article/details/53282826上篇博文介绍了floyd解决最短路径的方法,然而由于floyd极大的时间开销O(n^3)导致其应用领域并不是很广本文再介绍一个最短路径的算法——Dijkstra算法Dijkstra算法是典型的算法。Dijkstra算法是很有代表性的算法。Dijkstra一般原创 2016-11-22 11:22:37 · 1249 阅读 · 0 评论 -
最短路径——Floyd算法HDU Today(hdu2112)
最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括:确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。确定起点终点原创 2016-11-22 10:17:31 · 1001 阅读 · 0 评论 -
最小生成树——安慰奶牛(蓝桥杯试题集)
*对prim算法、Kruskal算法不是很理解的请移步http://blog.csdn.net/sm9sun/article/details/53256232 //并查集http://blog.csdn.net/sm9sun/article/details/53257264 //Kruskalhttp://blog.csdn.net/sm9sun/article/detai原创 2016-11-21 13:11:19 · 1237 阅读 · 0 评论 -
prim——最小连接路径和(hdu1301)
*本题的Kruskal解法http://blog.csdn.net/sm9sun/article/details/53257264题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301题目描述:给定村庄数n,用字母表的前n个字母表示,接下来n-1行每行一个村庄字母和与其连接的村庄数以及各村庄的字母和距离。求最小生成树。解题思路原创 2016-11-21 12:39:43 · 921 阅读 · 0 评论 -
并查集——食物链(poj1182)
题目链接:http://poj.org/problem?id=1182题目描述:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。原创 2016-11-21 11:24:54 · 695 阅读 · 0 评论 -
并查集——最小连接路径和Kruskal(hdu1301)
*没听说过并查集的同学先移步看一下上篇博客http://blog.csdn.net/sm9sun/article/details/53256232好,首先说一下并查集的标准定义:概述:在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在原创 2016-11-21 10:56:16 · 1785 阅读 · 1 评论 -
并查集——畅通工程(hdu1232)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232题目描述:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每原创 2016-11-21 09:25:38 · 1245 阅读 · 0 评论 -
搜索——滑雪(poj1088)
题目链接:http://poj.org/problem?id=1088题目描述:Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516原创 2016-11-20 21:03:57 · 449 阅读 · 0 评论 -
搜索&回溯——N皇后(hdu2553)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553题目描述:在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。解决思路:回溯官方课题~用这道题理解回溯再合适不过了,下面的代码原创 2016-11-20 20:54:59 · 5015 阅读 · 2 评论 -
搜索——素数环(hdu1016)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016题目描述:输出满足相邻的相加是素数的序列(注意不要重复)解题思路:类似于一些数字全排列的搜索,也就算是暴力深搜吧。不重复的话,用一个状态flag记录下i是否被用过即可#include#includeint Z_nPrime[40]={0,1,1,1,0,1,0,原创 2016-11-20 20:49:46 · 443 阅读 · 0 评论 -
搜索——下沙小面的2(hdu1572)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1572题目描述:话说当上小面的司机的Lele在施行他的那一套拉客法则以后,由于走的路线太长,油费又贵,不久便亏本了。(真可怜~)于是他又想了一个拉客的办法。对于每一次拉客活动,他一次性把乘客都拉上车(当然也不会超过7个,因为位置只有7个)。然后,Lele计算出一条路线(出于某些目的,原创 2016-11-20 20:44:45 · 435 阅读 · 0 评论 -
搜索——Red and Black(hdu1312)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312题目描述:一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象为墙,然后.为可以走的空地,求人可以走的最大点数。 解题思路: 好吧,搜索入门题,直接广度搜索,标志入队的次数。入队的次数即为行走的步数。 解题思路:基本属于深搜的水题了原创 2016-11-20 20:39:41 · 346 阅读 · 0 评论 -
搜索——I’m stuck!(ccf)
题目描述:给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思: '#': 任何时候玩家都不能移动到此方格; '+': 当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格; '-': 当玩家到达这一方格后,下一步可以向左右两个方向相邻的一个非'#'方原创 2016-11-20 20:31:39 · 412 阅读 · 0 评论 -
搜索——油田合并
先抛出一个题目:某石油公司发现了一个油田。该油田由n*m个单元组成的矩形,有些单元里有石油,有些则没有。单元油田可以通过上,下,左或右连通。在一个单元油田里架设一台采油机,它可以把和该单元油田相连的单元油田的石油采完。该公司想知道最少需要架设几台采油机能把所有的石油采完?示例输入:2 2@**@2 2@@@@示例输出:21讲dfs原创 2016-11-20 20:28:43 · 832 阅读 · 0 评论 -
匈牙利二分图最大匹配——过山车(hdu2063)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063题目描述:RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partne原创 2016-11-20 19:27:36 · 582 阅读 · 0 评论 -
母函数——找单词(hdu2082)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2082题目描述:假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值解题思路:首先说明一下母函数——1.“把组合问题的加法法则和幂级数的乘幂对应起来。”原创 2016-11-20 19:15:10 · 645 阅读 · 0 评论 -
KMP——怪盗基德的挑战书(hdu4552)
首先是KMP介绍:主串:a b a c a a b a c a b a c a b a a b b,下文中我们称作T模式串:a b a c a b,下文中我们称作W在暴力字符串匹配过程中,我们会从T[0] 跟 W[0] 匹配,如果相等则匹配下一个字符,直到出现不相等的情况,此时我们会简单的丢弃前面的匹配信息,然后从T[1] 跟 W[0]匹配,循环进行,直到主串结束,或者出现匹配的情况。原创 2016-11-20 19:07:25 · 821 阅读 · 0 评论 -
动态规划——K号数(蓝桥杯试题集)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T13问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格原创 2016-11-20 19:00:48 · 872 阅读 · 0 评论 -
动态规划——节点选择(蓝桥杯试题集)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T14问题描述有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?输入格式第一行包含一个整数 n 。接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。接下来一共 n-1 行,每原创 2016-11-20 18:41:00 · 2511 阅读 · 0 评论 -
动态规划——看似dp的贪心问题最大乘积(蓝桥杯试题集)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T136问题描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?输入格式 第一行一个数表示数据组数 每组输入数据共2行: 第1行给出总共的数字的个数n和要取的数的个数m,1 第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4原创 2016-11-20 18:07:32 · 931 阅读 · 0 评论 -
动态规划——方格取数(hdu1565)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565题目描述:给你一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大解题思路:很显然又是dp问题,我们可以把方格当成一个矩阵,每个数都是取或不去状态原创 2016-11-20 17:54:53 · 612 阅读 · 0 评论