【幂次方 洛谷——分治算法 P1010】教程文章相关的互联网学习教程文章

算法导论——拓扑排序【代码】

package org.loda.graph;import org.loda.structure.Stack; import org.loda.util.In;/*** * @ClassName: Topological * @Description: 拓扑排序是所有节点dfs的逆后序,也就是每个节点任务完成的时间的逆序排序 * @author minjun * @date 2015年5月24日 下午7:17:53 **/ public class Topological {/*** 由于拓扑排序是df获取所有节点的逆后序排序* 这里利用Stack后序存储元素,那么获取出来就是反向(逆)后序排列的拓顺序*/...

分类与监督学习,朴素贝叶斯分类算法【图】

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。 分类与聚类都是分开几类,分类是根据历史经验,已知类别,监督学习,聚类是自己分析现有数据,无监督学习监督学习利用历史数据分类,把已有数据代入。无监督学习是没有样本,将已有数据分类2.朴素贝叶斯分类算法 实例利用关于心脏病患者的临床历史数据集,建立朴素贝叶斯心脏病分类模型。有六个分类变量(分类因子):性别,...

【LeetCode-面试算法经典-Java实现】【070-Set Matrix Zeroes(矩阵置零)】【代码】【图】

【070-Set Matrix Zeroes(矩阵置零)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 题目大意  给定一个m*n的矩阵,如果某个位置是0。将对应的行和列设置为0。 解题思路  先对矩阵进行扫描,标记要进行置0的行和列,对要进行置0的行在第0列上进行标记,对置0的列在第0行上进行标标记。同时还要两变量记录...

冒泡排序算法与选择排序算法【代码】

1数组高级以及Arrays(掌握)2 (1)排序3 A:冒泡排序4 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。5 6publicstaticvoid bubbleSort(int[] arr) {7for(int x=0; x<arr.length-1; x++) {8for(int y=0; y<arr.length-1-x; y++) {9if(arr[y] > arr[y+1]) {10int temp = arr[y];11 arr[y] = arr[y+1];12 ...

opencv2对读书笔记——使用均值漂移算法查找物体【图】

一些小概念1.反投影直方图的结果是一个概率映射,体现了已知图像内容出如今图像中特定位置的概率。2.概率映射能够找到最初的位置,从最初的位置開始而且迭代移动,便能够找到精确的位置,这就是均值漂移算法做的事情。3.均值漂移算法是以迭代的方式锁定函数的局部最大值的。关于均值漂移算法的过程(opencv)事实上均值漂移算法就是寻找提前定义寻找区域中数据点的重心,或者说加权平均值。将寻找区域中心移动到数据点的重心处,并反...

数据结构 算法【代码】【图】

#include<iostream> usingnamespace std;/* 算法算法概念 算法是特定问题求解步骤的描述 在计算机中表现为指令的有限序列 算法是独立存在的一种解决问题的方法和思想。 对于算法而言,语言并不重要,重要的是思想。算法和数据结构区别 数据结构只是静态的描述了数据元素之间的关系 高效的程序需要在数据结构的基础上设计和选择算法 程序=数据结构+算法总结: 算法是为了解决实际问题而设计的 数据结构是算法需要处理的问题载体 数据...

HDU 2255 KM算法 二分图最大权值匹配【代码】

奔小康赚大钱Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10760 Accepted Submission(s): 4765Problem Description传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须...

堆排序算法【代码】【图】

一、堆排序算法的基本特性时间复杂度:O(n*lgn)最坏:O(n*lgn)空间复杂度:O(1)不稳定。堆排序是一种选择排序算法,与关键字的初始排列次序无关,即就是在最好,最坏,一般的情况下排序时间复杂度不变。对包含n个数的输入数组,平均时间为O(nlgn),最坏情况(已经排好序)也是是O(nlgn),最好情况(完全无序)也是O(nlgn)。由于不但时间复杂度少,而且空间复杂度也是最少的,所以是用于排序的最佳选择。因为,基于比较...

JAVA的六大经典算法,代码案例简化分析【图】

java八大经典算法:冒泡、选择、快速、插入、希尔、堆、归并、基数1.算法实现类package com.algorithm;/*** * @Title: BubbleSort.java* @Copyright: Copyright (c) 2005* @Description: <br>* <br>* JAVA六大经典算法<br>* 冒泡、选择、快速、插入、希尔、堆* @Created on 2015年6月29日 下午12:48:14* @author yangkai*/ public class AlgorithmClassic {/*** 冒泡排序* * @return*/public static i...

KPM算法初步理解

一个字符串“FBCABCDABABCDABCDABYW”中是否包含另外一个字符串“ABCDABY”?  上面这道题目是一个经典的字符串匹配的题目,对于字符串匹配,比较好的算法里很容易想到KPM算法,那KPM算法是干什么的?为什么说KPM比较优秀? 给定一个字符串O和F,长度分别是m、n,判断F是否在O中出现,如果出现则返回出现的位置。常规方法是遍历O的每一个字符,与F的每一个字符进行比较,但是这种方法的时间复杂度是T(m*n),但是KPM算法使得时...

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解【图】

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法。SMO算法就是帮助我们求解:s.t. 这个优化问题的。虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题。关于SMO最好的资料还是论文《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machi...

算法笔记之归并排序

4、归并排序4.1算法思想——将数组分为两半,对每部分递归地应用归并排序,直到最后的子数组只包含一个元素。在每部分都排好序后,对它们进行合并。4.2 时间复杂度——假如用T(n)表示使用归并排序对n个元素构成的数组进行排序而使用的时间,用mergeTime来表示将两个子分组合并起来而花费的时间。那么T(n)= T(n/2)+T(n/2) + mergetime而megeTime就是归并两个子数组所耗费的时间,以最大时间来算,最多需要n-1次来比较两个子数组...

图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码)【代码】【图】

图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码)\(y(m,n)=x(m,n)+\lambda*z(m,n)\) 其中\(x(m,n)\)是处理前图片,\(y(m,n)\)是锐化后,\(z(m,n)\)代表增强图像的边缘和细节(高频部分),\(\lambda\)是增强因子,如下图所示:1.laplacian 增强def laplacianSharpen(im, alpha):k = np.array([[0, 0, 0, ], [0, 1, 0], [0, 0, 0]])+alpha * np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])# k = np.arra...

Java算法

我们常见的排序分为以下几类:插入排序(直接插入排序,希尔排序)交换排序(冒泡排序,快速排序)选择排序(直接选择排序,堆排序)归并排序分配排序(箱排序,基数排序)  对于以上的排序有什么不同呢?  需要的辅助空间组多的:归并排序, 需要的辅助空间最小的:堆排序,平均速度最快的:快速排序时间复杂度:O(nlogn): 快速排序, 堆排序, 归并排序O(n2): 直接插入排序, 冒泡排序, 直接选择排序O(n): 基数排序空间复杂度...

poj 1274(最大匹配,匈牙利算法,注意数据污染!)【代码】

#include<iostream> #include<cstdio> #include<cstring> usingnamespace std; int data[205][205],link[205],visit[205],count,n,m; bool dfs(int x){for(int j=1;j<=m;j++){if(data[x][j]&&!visit[j]){visit[j] = 1;if(link[j]==0||dfs(link[j])){link[j] = x;returntrue;}}}returnfalse; } void hungery(){for(int i=1;i<=n;i++){memset(visit,0,sizeof visit);if(dfs(i)){count++;}} } int main(){int i,j,p,q;while(scanf("%d...