Uva/Lintcode/高频算法题小结
文章平均质量分 78
提供Uva/Lintcode/高频算法题小结
yzwall_
这个作者很懒,什么都没留下…
展开
-
二叉树遍历小结
二叉树遍历小结二叉树遍历小结声明二叉树遍历概述前序遍历1 非递归实现2 递归实现中序遍历1 非递归实现2 递归实现后序遍历1 非递归实现2 递归实现层序遍历声明文章均为本人技术笔记,转载请注明出处: [1] https://segmentfault.com/u/yzwall [2] blog.csdn.net/j_dark/0 二叉树遍历概述二叉树遍历:按照既定序,原创 2017-06-17 11:58:44 · 1673 阅读 · 0 评论 -
常用排序算法小结
常用排序算法小结常用排序算法小结声明排序说明选择排序冒泡排序直接插入排序希尔排序归并排序快速排序堆排序桶排序计数排序声明文章均为本人技术笔记,转载请注明出处: [1] https://segmentfault.com/u/yzwall [2] blog.csdn.net/j_dark/排序说明排序算法默认升序排序测试题目lintcode Sort Integers原创 2017-06-14 21:40:27 · 941 阅读 · 0 评论 -
求数组交集不同解法小结
求数组交集不同解法小结求数组交集不同解法小结声明LintCode547求数组交集_要求元素不重复解法一排序二分查找解法二HasSet暴力去重解法三双指针法重视LintCode548求数组交集变种解法一HashMap统计次数实现解法二排序二分查找变种双指针声明文章均为本人技术笔记,转载请注明出处: [1] https://segmentfault.com/u/yzwall [2原创 2017-06-12 10:06:35 · 2609 阅读 · 0 评论 -
两数之和问题各变种多解法小结
两数之和问题各变种多解法小结两数之和问题各变种多解法小结声明LintCode_56两数之和等于target解法1暴力On2On2时间复杂度求解解法2HashMap OnOn时间复杂度求解解法3双指针OnlognOnlogn时间复杂度求解LintCode_587两数之和等于target的不重复组合数目解法双指针法OnOn时间复杂度求解LintCode_608两数之和等于target数组原创 2017-06-12 10:09:09 · 1008 阅读 · 0 评论 -
UVA 531 Compromise
题目大意:输入两段文章,每段文章以#字符为终止符,输出最长公共子序列(单词组成)解题策略:DP+LCS输出,算法网上比比皆是。注意输入和单词分离,输出时注意当输出最后一个单词,须输出换行 /* UVA 531 Compromise AC by J.Dark ON 2013/3/8 Time 0.456s DP LCS */#include #incl原创 2013-03-11 17:59:09 · 724 阅读 · 0 评论 -
UVA 10405 Longest Common Subsequence
题目大意:输出最长公共子序列长度,模板题解题策略:DP /* UVA 10405 Longest Common Subsequence AC by J.Dark ON 2013/3/6 Time 0.052s*/#include #include #include #include #define MAXN 1010char s1[MAXN原创 2013-03-11 18:32:23 · 742 阅读 · 0 评论 -
UVA 10066 The Twin Towers
题目大意:输出最长公共子序列长度解题策略:DP /* UVA 10066 The Twin Towers AC by J.Dark ON 2013/3/6 Time 0.028s*/#include #include #include #include #define MAXN 1010using namespace std;int s1[MA原创 2013-03-11 19:16:58 · 740 阅读 · 0 评论 -
UVA 10192 Vacation
题目大意:该题描述巨长,本质实际就是求两组字符串最长公共子序列长度,以#字符结束输入解题策略:赤裸裸的DP /* UVA 10192 Vacation AC by J.Dark ON 2013/3/5 Time 0.056s*/#include #include #include #include #define MAXN 1010char s1[原创 2013-03-11 19:21:26 · 1097 阅读 · 0 评论 -
UVA 900 Brick Wall Patterns
题目大意: 给N个砖头,砖头长为宽两倍,用N块砖头组合矩形,有多少种组合方式。解题策略: 不难推演,该题为赤裸裸的斐波那契数列,具体推导过程详见baidu /* uva 900 Brick Wall Patterns 斐波那契数列 AC by J.Dark ON 2013/2/27 Time 0.008s*/#include using namesp原创 2013-03-11 19:26:10 · 1155 阅读 · 0 评论 -
UVA 580 Critical Mass
题目大意:U代表危险物品铀,L代表安全物品铅,当U连续数目>=3时,为危险情况。输入数字N代表有四个箱子,每个箱子可以存放U或者L,求危险情况种数。 (题意很麻烦,谁让是人家外国做的,唉~~~)解题策略:网上有DP解的动态递推公式,还有一个策略是逆向考虑,通过解出安全的情况数,总情况数-安全情况数=危险情况数。 总情况原创 2013-03-11 19:38:07 · 1898 阅读 · 0 评论 -
UVA 10450 World Cup Noise
题目大意/解题策略: 简单DP+斐波那契数列 /* UVA 10450 World Cup Noise AC by J.Dark ON 2013/2/28 Time 0.012s*/#include using namespace std;const int maxn = 100000;int main(){ long long int ans原创 2013-03-11 19:40:12 · 1289 阅读 · 0 评论 -
UVA 674 Coin Change【补充分析】
题目大意:凑钱,求组合方式解题策略:今天算法课看到rank上此题AC的人最多,但是大多数人感觉没讲明白,在此分享下自己的一点点思考: 最近三周做的题目都是DP(动态规划),感觉动态规划要解决三个问题, 一,当前状态是什么? 二,当前状态的直接前驱状态有哪些?原创 2013-03-12 16:40:34 · 1141 阅读 · 0 评论 -
UVA 357 Let Me Count The Ways
题目大意:原理同UVA674,求凑钱种数解题策略:DP,状态转移方程同674,大小开到30000+,注意数组溢出 /* UVA 357 Let Me Count The Ways AC by J.Dark ON 2013/3/12 Time 0.028s*/#include #include #include using namespace std;原创 2013-03-12 23:30:17 · 990 阅读 · 0 评论 -
UVA 10313 Pay the Price
题目大意:提供面额1~300的硬币(美元硬币这题性质一样),题目有三种输入,分别是: 1,输入N——输出1~300硬币组成N的方案数; 2,输入N,L1——输出组成N的方案数中,硬币数不超过L1的方案数; 3,输入N,L1,L2——输出组成N的方案数中, L1原创 2013-03-15 17:14:07 · 849 阅读 · 0 评论 -
UVA 108 Maximum Sum (最大子矩阵和) POJ 1050
题目大意:输入N*N矩阵,输出最大子矩阵和。解题策略:这道题为DP经典问题——最大连续区间和的拓展, http://www.stackpop.org/html/503_2d_max_interval.html 这位大牛把我意会却无法言传的部分都说了,分析透彻,图文并茂。 PS:网上求连续区间和的方法略慢,大家可原创 2013-03-20 19:48:04 · 996 阅读 · 0 评论 -
UVA 10074 Take the Land(最大子矩阵和变形)
题目大意:输入矩阵,找出元素全为0的子矩阵的元素最大和。解题策略:将0,1转换,动态规划中判断最长子区间和与当前列的大小的关系。/* UVA 10074 Take the Land AC by J.Dark ON 2013/3/21 Time 0.020s*/#include #include #include #include using原创 2013-03-21 11:41:20 · 2389 阅读 · 0 评论 -
UVA 836 Largest Submatrix(01矩阵求和)
题目大意:这题和10074几乎一样,只不过没有给出矩阵的边长。解题策略:解法同UVA 10074, (传送门:http://blog.csdn.net/j_dark/article/details/8700390) 输入无比恶心,时间都费在这里了,大家注意!/* UVA 836 Largest Submatrix AC原创 2013-03-21 17:32:22 · 1668 阅读 · 1 评论 -
UVA 10667 Largest Block
题目大意:给出棋盘大小(p*p),给出障碍区域数目,每个障碍区以两个点坐标形式确定,输出最大可用区域面积。解题策略:将障碍区以0标记,可用区以1标记,然后解法同UVA 10074 Take the Land(传送门:http://blog.csdn.net/j_dark/article/details/8700390)。/* UVA 10667 Largest Blo原创 2013-03-21 19:20:27 · 1118 阅读 · 0 评论 -
UVA 11137 Ingenuous Cubrency
题目大意:同uva 674, 硬币金额预处理。解题策略:同uva 674。/* UVA 11137 Ingenuous Cubrency AC by J.Dark ON 2013/3/25 Time 0.008s*/#include #include #include using namespace std;typedef unsigned l原创 2013-03-25 23:42:38 · 867 阅读 · 0 评论 -
UVA 10036 Divisibility【补充分析】
题目大意:给出数字,要求经过任意加减法(每个数只用一次),输出是否可整除被除数解题策略:(a)此题问你是否可以整除。我们知道整除的意思就是余数为0,所以判别是否可以整除,只要判余数是否为0,所以需要做取余数操作。(b)计算式(10+11)% 3 = (10%3 + 11%3)% 3,其中%表示取余数操作。你可以验算一下,看看这个算式是否成立。(c)r是余数,队列里存放的都是余数原创 2013-03-27 19:14:55 · 1963 阅读 · 5 评论 -
UVA 10482 The Candyman Can
题目大意:给许多硬币,分给三个人,要求输出拿钱最多者与拿钱最少者差的最小值。解题策略:思路同Dividing Coins,定义二维数组dp[i][j],表示第一个人拿i钱,第二个人拿j钱,第三个人呢?当然硬币总和(sum)-i-j, 当前方案可施行,dp=1,否则为0,运用减唯的思想; /* UVA 10482 The Candyma原创 2013-03-29 15:31:40 · 2384 阅读 · 0 评论 -
UVA 231 Testing the CATCHER【更正】
题目大意:输出最长递减子序列长度,LIS简单变形。解题策略:LIS简单变形,注意输出和格式。之前不注意把wa的代码贴上来,晕……/* UVA 231 Testing the CATCHER AC by J.Dark ON 2013/3/31 Time 0.008s*/#include #include #include #include us原创 2013-03-31 20:56:04 · 1275 阅读 · 0 评论 -
UVA 497 Strategic Defense Initiative【最长严格递增子序列长度及打印】
题目大意:同标题。解题策略:输入要注意,降序输出LIS可以用一个简单的递归搞定,升序花了点功夫。/* UVA 497 Strategic Defense Initiative AC by J.Dark ON 2013/4/1 Time 0.012s*/ #include #include #include #include #include u原创 2013-04-01 21:07:13 · 1809 阅读 · 0 评论 -
UVA 437 The Tower of Babylon【LIS变形+O(n2)算法】
题目大意:给出塔的长宽高(立方体),每个塔长宽高可任意且无限用,要求将所以可能的塔堆起来,题意要求上边的塔的长宽必须分别小于下面的长宽。 最后求出满足题意的塔的最大高度。解题策略:每个立方体,长宽高因为可以互换,所以可以将每一个立方体可拓展为3! = 6种立方体,全部存储,并按照底面积降序排列,然后以题意要求求出变形LIS。原创 2013-04-07 15:13:33 · 1194 阅读 · 0 评论 -
UVA 10954 Add All【优先队列简单应用】
题目大意:对于一组数不同求和方法中,每步累加和之和最小,详细见样例。解题策略:运用优先队列(priority_queue),每次取队列中最小的前两值取和,累加。 第一次用优先队列,mark下/* UVA 10954 Add All AC by J.Dark ON 2013/4/7 Time 0.048原创 2013-04-07 18:48:39 · 847 阅读 · 0 评论 -
Collding Ants【贪心基础】
题目大意:N只蚂蚁在长度为[0, M]的线段内活动,给出蚂蚁位置,蚂蚁速度为单位距离/秒,求出所有蚂蚁掉下去(爬出线段区域)的最小和最大时间。 蚂蚁运动方向不定,两只蚂蚁相遇后,双双改变运动方向。解题策略:1,相遇问题 假设A,B两只蚂蚁相遇,原创 2013-04-10 18:08:05 · 682 阅读 · 0 评论 -
UVA 10004 Bicoloring【DFS简单二部图判定】
题目大意:给出无向图的若干条边,要求对每条边的两个点染色,若任意两个邻接点颜色不同,输出"BICOLORABLE", 否则输出"NOT BICOLORABLE"。解题策略:实质就是判断是否给出的无向图是不是一个二部图, 刚开始想到一个算法:从起点开始BFS,生成一个广度优先生成树,判断每一层任意两个结点是否邻接,原创 2013-04-20 13:29:01 · 1353 阅读 · 0 评论 -
UVA 670 The dog task【二部图最大匹配 邻接表DFS】
题目大意:题意百度。解题策略:建立二部图模型,以人走的每段路与狗的兴趣点作二部图,求出该二部图对于狗的兴趣点的最大匹配数,加上人的路线,就是狗的路线,输出即可。 1,二部图最大匹配用邻接表实现,快速; 2,有个非常恶心的wa点,就是建立人的每段路与狗的兴趣点之间关系时,精度控制eps,若定义为1e-10 wa,原创 2013-04-20 23:56:32 · 1401 阅读 · 0 评论 -
UVA 11045 My T-shirt suits me【二部图是否全匹配+DFS邻接矩阵实现】
题目大意:1,西服有六种款式{"XXL", "XL", "L", "M", "S", "XS"},给出西服总数,保证西服总数是衣服款式的整数倍,即每款西服数量相同; 2,每个人可选择两款衣服,但一个人只能挑一件适合自己的衣服; 3,若最后所有人都有适合自己的衣服,输出YES,否则输出NO;解题策略:1,很明显的原创 2013-04-21 11:51:49 · 1392 阅读 · 0 评论 -
UVA 10092 The Problem with the Problemsetter【二分图最大匹配变形 邻接矩阵实现最大匹配算法】
题目大意:一名老师出题,要求出N种题型,每个题型要求出多少题给出; 现在有M道题(待选问题),每道题给出它可以被归类的题型; 问最后是否能按照要求出题,满足要求,输出1及每种题型对应待选问题,否则输出0解题策略:这题初看思路与 UVA 11045 My T-shirt suits me http://blog.原创 2013-04-21 20:24:03 · 1948 阅读 · 0 评论 -
UVA 820 Internet Bandwidth【EK算法模板 邻接矩阵实现】
题目大意: 网络流入门题,给出无向图,求出无向图最大流量。解题策略: 1,初学网络流,用的是最基本的EK算法,朴素BFS不断求最短增广路。 2,无向图求最大流与平常的有向图求最大流的区别在于对“后退边”的处理,术语叫“后退弧” 暂发现wa点有:原创 2013-04-27 18:54:04 · 1128 阅读 · 0 评论 -
UVA 191 Intersection POJ 1410【向量法判断线段相交】
题目大意:给出线段起点,终点,之后给出矩形对角线的起点与终点,千万别天真按照样例就理解为是左上和右下点,不一定!解题策略:今天下午开始看计算几何,初看题目第一反应是解析几何,但是误差太大,向量法完美解决本体,wa了好久,终于圆满解决,具体详见注释。 从这题开始AC所有计算几何吧!/* UVA 191 Intersection原创 2013-05-01 23:37:14 · 2136 阅读 · 0 评论 -
UVA 11343 Isolated Segments【判断线段相交】
题目大意:求出孤立线段数目(孤立线段:与其他线段不相交的线段)。解题策略:还是向量法解决,但是因为溢出的问题,wa了一宿,一度以为算法不严密,大家注意溢出!/* UVA 11343 Isolated Segments AC by J_Dark ON 2013/5/2 17:09 Time 0.015s*/#include #include #incl原创 2013-05-02 17:08:11 · 2062 阅读 · 3 评论 -
UVA 378 Intersecting Lines POJ 1249【直线位置情况简单判定】
题目大意:判断一组两条直线(是直线不是线段)位置情况: 1,相交,按照格式输出交点; 2,平行,输出“NONE“; 3,重叠,输出”LINE“;解题策略:1, 由于一直考虑用求向量叉积求解,所以抛弃解析几何方法,题目简单,需要仔细耐心;原创 2013-05-03 00:21:42 · 2049 阅读 · 0 评论 -
UVA 10902 POJ 2653 Pick-up sticks【线段规范相交】【图】
题目大意:给出火柴(线段)的起点终点,有童鞋无聊按输入顺序扔火柴,求最后所有没有被其他火柴压住的火柴序号。解题策略:第一反应想到的算法很简单: 1,火柴只能被后来的火柴可能压住 火柴只能和后来的火柴“相交” ,之前的火柴不考虑; 2,“相交” "规范相交",这里是关键;(详见下图)原创 2013-05-03 10:50:17 · 1430 阅读 · 0 评论 -
UVA 866 Intersecting Line Segments【线段规范相交简单变形】
题目大意:给出一组线段,若每组线段有相交,则线段有交点处断开,生成新的线段,求出最后所有线段数目解题策略:经过验证,该题相交情况为“规范相交”,难度大大降低。 我的核心算法是:对一个线段来说,记录它与其他所有线段规范相交点的数目,断开生成新线段数目 = 相交点数目+1。/* UVA 866 Intersecting Line Segm原创 2013-05-03 13:32:41 · 1789 阅读 · 0 评论 -
UVA 11783 Nail【简单线段相交判断 附YY加强版】
题目大意:给出一组木棍,若两木棍相交(规范相交,非规范相交部分去除重叠部分)钉一个钉子; 若有木棍和其他所有木棍不相交,钉两个;最后固定所有木棍,所需钉子数;解题策略:很水的一题,判断线段相交,而且相交情况简单,没什么说的。之前题意理解复杂,YY一下题意,并给出程序,有兴趣的看下文:原版题意代码:/* UVA 11原创 2013-05-04 14:31:52 · 1551 阅读 · 0 评论 -
UVA 681 Convex Hull Finding【逆时针输出凸包顶点】
题目大意:按照输出格式,从起点开始,逆时针输出凸包顶点,最后仍输出起点.解题策略:今天提前看了一下凸包相关的算法,思想是Graham-Scan算法,但是使用的“序”是水平序。 第一道凸包题,Mark下/* UVA 681 Convex Hull Finding AC by J_Dark ON 2013/5/6 0:25原创 2013-05-06 00:24:16 · 1872 阅读 · 0 评论 -
UVA 218 Moth Eradication【顺时针输出凸包顶点+凸包周长】
题目大意:如题顺时针输出凸包顶点,并且输出凸包周长; 注意:(1)题目告诉输出时,凸包起点任意,但必须输出两次; (2)每两组数据之间换行,其他就没什么了。解题策略:同上。/* UVA 218 Moth Eradication AC by J_Dark ON原创 2013-05-06 16:22:19 · 1125 阅读 · 0 评论 -
UVA 10078 The Art Gallery【输入点是否全部在凸包上】
题目大意:抽离模型为判定输入点是否全部在凸包上,是输出“No”,否输出“Yes”。解题策略:求出凸包,直接判定“栈”中顶点数top与nodeNum的关系即可(一开始以为要用到判定点是否在多边形内这个算法,后来发现不需要)/* UVA 10078 The Art Gallery AC by J_Dark ON 2013/5/6 16:45 Time 0.012原创 2013-05-06 16:47:23 · 877 阅读 · 0 评论