自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

转载 【转】awk学习

原文链接:http://blog.chinaunix.net/uid-23302288-id-3785105.htmlawk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; comman...

2018-08-16 11:03:38 123

原创 聚类算法

    什么是聚类?    将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。    本人暂时掌握的聚类算法有如下几种:        k-means(k均值)        k-medoids        meanshift(均值漂移聚类)        Hierarchical Clustering(层次聚类)        DBSCAN  ...

2018-07-23 16:59:17 266

原创 Spectral Clustering

目录什么是Spectral Clustering?Spectral Clustering的分割方法       第一步构建一个相似度矩阵       第二步构建一个度矩阵       第三步构建拉普拉斯矩阵L       第四步归一化矩阵L       第五步计算矩阵L的特征值和特征向量关于如何计算特征值和特征向量先贴出我借鉴的博客http://blog.p...

2018-07-23 16:55:50 3681 7

原创 Graph Community Detection

先贴出我借鉴的博客https://blog.csdn.net/gaofeipaopaotang/article/details/80094656Graph Community Detection(图团体检测)       当我们的样本以及样本之间的关系可以被表示为一个网络或图(graph)时,可能存在这样的需求:我们想找出来网络中联系比较”紧密”的样本。举个例子,在社交网站中,用户以及用...

2018-07-23 13:36:58 2903 1

原创 Birch

目录什么是BIRCH?聚类特征CF:CF Tree的生成:BIRCH优点:BIRCH缺点:先贴出我借鉴的博客https://www.cnblogs.com/pinard/p/6179132.html https://blog.csdn.net/congnaahahei/article/details/78881128什么是BIRCH?       BIRCH的全...

2018-07-23 11:08:04 1379

原创 DBSCAN

先贴出我借鉴的博客https://blog.csdn.net/Katherine_hsr/article/details/79382249 https://blog.csdn.net/zhouxianen1987/article/details/68945844DBSCAN是基于密度的聚类算法,和meanshift同是基于密度的算法以下定义需要了解:核心点:在半径内含有超过minP...

2018-07-22 23:19:13 1278

原创 Hierarchical Clustering

先贴出我借鉴的博客https://blog.csdn.net/Katherine_hsr/article/details/79382249Hierarchical Clustering(层次聚类),层次聚类分为两种,分别是分裂法和凝聚法。分裂法不常用,在这里重要介绍的是凝聚法。分裂法:       分裂法指的是初始时将所有的样本归为一个类簇,然后依据某种准则进行逐渐的分裂,直到达到某...

2018-07-22 21:53:54 318

原创 meanshift

先贴出我借鉴的博客https://blog.csdn.net/Katherine_hsr/article/details/79382249       meanshift聚类方法又称为均值漂移聚类。均值漂移聚类是基于滑动窗口的算法,来找到数据点的密集区域。通过将中心点的候选点更新为滑动窗口内点的均值来完成,来定位每个簇的中心点。然后对这些候选窗口进行相似窗口进行去除,最终形成中心点集及相应的...

2018-07-22 21:18:40 769

原创 k-medoids

       k-medoids与k-means,唯一的区别是,k-mediods每次选取的质心,必须是样本点,而k-means每次选取的质心可以是样本点之外的,就好比中位数和平均值的区别,其余步骤完全一样。       这里是对应的k-means聚类方法...

2018-07-22 19:27:41 2350

原创 k-means

目录k-means的原理是k值的选取(手肘法)关于初始质心的选取:k-means的优点:k-means的缺点:先贴出我借鉴的博客https://blog.csdn.net/Katherine_hsr/article/details/79382249 https://blog.csdn.net/qq_15738501/article/details/79036255 ...

2018-07-22 14:13:04 578

原创 冒泡排序的改进(Modified_Bubble_Sort)

       之前我介绍过冒泡排序(通往冒泡排序的传送门),冒泡排序的时间复杂度是很高的,现在说一下冒泡排序的最优化的一种方式,双向排序。       此排序的原理为,一个无序的序列,先对其从头进行遍历,若当前值大于下一值就进行交换(这里是按照由小到大排的),遍历完一次后记录最后一次交换的位置,再以那个位置作为起始点,从后往前进行遍历,若当前值小于下一值就进行交换,同样记录最后一次交换的位置,...

2016-12-26 14:55:05 362

原创 归并排序(Merge_Sort)

       归并排序是利用分治(把大问题拆成若干个小问题,且小问题一定是有解的)的思想来排序的,归并排序的基本操作是,假定一个无序的序列{23,64,12,31,10,8,79,55},要把它变成一个有序数列就先要把其平均分为两个数组A{23,64,12,31},B{10,8,79,55}。再把A,B进行排序,对A,B排序就是两个相对较小的问题。数组A进行排序的方法也是把A平均分成2个数组A1{...

2016-12-26 12:35:06 275

原创 快速排序(Quick_Sort)

       我个人认为,快速排序是一个十分经典的排序方法,顾名思义,快排确实比其他普通排序算法要快,空间复杂度也不是特别高。       所谓快排,先讲一下大体上的操作,我先让待排序序列的第一个元素作为一个“哨兵”,用这个哨兵把序列分成两部分,前一部分比该哨兵的值小,后一部分比该哨兵的值要大。然后我分别对前后两个序列分别快排,也就是重复此操作。但是要完成快排还要解决一件事,就是如何用哨兵把原...

2016-12-19 16:56:10 422

原创 桶排序(Bucket_sort)

       桶排序,这种排序方法与其他方法不同,因为它不是比较排序,而是通过映射来完成排序的。要开数组的大小要大于数组元素最大值的,初始化数组里的所有元素存的都为0,遍历这个序列,序列的元素每出现过一次便在数组相应的下标位置的数+1。遍历完整个序列,排序也就完成了。桶排序的时间复杂度为O(n),但是这种排序是十分消耗空间的。详情见代码。#include<cstdio>#inc...

2016-12-19 16:19:12 2230

原创 希尔排序(Shell_Sort)

       希尔排序只是插入排序的一种更高效率的改进方法,它是缩小增量排序,其方法跟插入排序(通往插入排序的传送门)方法大致相同,不同点是插入排序每次都去寻找它的下一个元素所在的位置,而希尔排序是第一次去寻找它的下d1(所谓的增量,d1=n/2)个元素的位置(直到寻找完整个序列),下一次去寻找它的下d2个元素的位置 (d2=d1/2),直到增量dt=1的时候排序才结束。也可以把希尔排序理解为一种...

2016-12-19 15:25:28 308

原创 插入排序(Insert_Sort)

        所谓插入排序,就是先在无序的序列中(初始序列认为,除了第一个元素以外是无序的)找第一个元素,之后在有序序列(初始状态认为第一个元素是有序的,以后每往有序区插入一个元素,有序区长度自然加一)中找到这个元素应该在的位置,把它插入到这个位置,并且后面的元素依次往后移,重复以上操作,直到整个序列全变成有序的为止。插入排序的平均时间复杂度为O(n^2),此排序相对稳定。详情见代码。 ...

2016-12-19 12:51:07 792

原创 选择排序(Select_Sort)

       所谓选择排序,就是每次找到未排序中最小的(最大的也行)元素的位置,找到后与该位置与未排序序列的第一个元素交换值,直到该序列成为有序序列。初始状态整个序列为无序序列,每次交换都使有序序列的长度加一,无序序列的起始位置后移一位。选择排序的平均时间复杂度为O(n^2),且选择排序相对不稳定。详情见代码。#include<cstdio>#define maxn 1000+...

2016-12-16 17:03:42 5926

原创 冒泡排序(Bubble_Sort)

       冒泡排序可能是大家最先接触的排序方法。所谓冒泡排序就是把最小的数值“浮到”数组的最上端,或者是把最大的数值“沉到”数组最底端。当我对数组遍历的时候,每次比较当前数值与下一个数值,如果当前数值比下一数值大,交换两位置数值。假如当前数值为最大数值,则会一直交换到数组底端(这句话需要仔细想想),这就是所谓的“下沉”,经过此操作最后一个位置的值就一定是最大值。如果有n个元素,最后一个元素已经...

2016-12-16 16:58:18 428 2

原创 Codeforces Round #368 (Div. 2) B. Bakery

题意:有n个点m条路和k个面包店,接下来有m行,每行有u,v,l分别代表两个点和这两个点的距离,接下来有k个点代表面包店的位置。问点离面包店的最短距离,点不能是面包店,如果没有就输出-1。思路:暴力即可,把面包店的位置设为1,其他点为0,如果某两个点相加得1,就能知道这个点一定和面包店相连的,只需排个序,把最短的距离输出即可。超时了无数次,最后发现原来是cmp打错了。具体看代码。#inc...

2016-08-24 22:25:10 210

原创 C. Terse princess

题意:有个公主找王子,如果这个人比之前所有王子的财富都高,公主就Oh,如果这个人比之前所有的财富值的总和加起来还多,就WOW,有n个人a次Oh,b次WOW。输出一个序列满足a,b,如果没有就输出-1.思路:这题需要数列是从小到大,比较坑的就是,如果序列是1 2 3 4的话,1是2的两倍是Oh还是WOW呢。这一点其实我也不是很理解。我就优先处理b的数值,再处理a,如果最后a||b的话就输出-1,...

2016-08-24 21:40:57 334

原创 Codeforces Round #368 (Div. 2) A. Brain's Photos

水题,我当时竟然被Hack了,哎.题意:只要出现C或M或Y,就输出#Color,反之输出#Black&White.思路:正常敲就可以.%c前面需要有个空格.%c前加了空格就是用来屏蔽空白符的。 不加空格,scanf会读取输入中的第一个字符;加了空格,scanf会读取输入中的第一个非空白符。具体看代码.#include<cstdio>char str;int m...

2016-08-21 16:05:05 171

原创 Codeforces B. Escape

题意:公主以vp的速度逃跑,龙以vd的速度去追赶,公主出发t时间后龙才出发,如果龙追上了公主,公主便使用个道具是龙以原速度回到出发点,并且f时间后才可以出发。公主与终点距离c,只要公主到达终点龙就追不上公主,问公主需要使用多少次道具。思路:如果龙的速度小于公主的速度就永远追不上,只需要计算每次龙追上公主的时间即可。再将距离和终点比较。具体看代码。#include<cstdio&gt...

2016-08-16 22:14:50 277

原创 CodeForces 689C Mike and Chocolate Thieves

题意:有四个小偷,假设第一个小偷偷了a的东西,则第二个偷了a*k的东西,第三第四个以此是a*k*k,a*k*k*k。你不知道a和k。但是你知道一共有几种偷得方法m。问能包含所有方法的最小背包容量n(小偷装东西的包)。思路:可想而知m=n/(2*2*2)+n/(3*3*3)+n/(4*4*4)+...。去寻找n,看了一下m的数据范围特别大,就想到用二分法。没什么太大的难度。具体看代码。#i...

2016-08-10 12:30:19 256

原创 CodeForces 686C Robbers' watch

题意:有两个数n,m。有个冒号,冒号的左边是从0到n-1的七进制的数,右边是0到m-1的七进制的数。要求冒号左右不能有重复的数字,问总共有多少种情况。 思路:首先要求不能有重复的数字,就想到用一个数组来存每一个出现过的数字,数组初始化为0,出现过数字就++,这样也需要判断数字的位数,打表即可。最开始超时了,因为没有考虑数字长度问题,七进制,一共就0到6这七个数,所以只要数字大于117649...

2016-08-10 12:14:40 685

原创 CodeForces 697C Lorenzo Von Matterhorn

题意:有q个节点构成二叉树,有两种输入,第一种是1 v u w,代表是从v节点走到u节点需要w元。第二种是2 v u,代表是从v节点走到u节点,并且输出所需的钱。思路:看到这道题的时候发现1 ≤ v, u ≤ 1018,这两个数特别大,感觉会用到map去存。另一个难点就是怎么去判断v节点和u节点是否在1的两侧或同侧。判断方法就是,先比较v,u两个点的大小,再将大的那个节点除以二(就一定是它的父...

2016-08-09 22:23:04 388

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除