自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACReaper

重剑无锋,大巧不工。

  • 博客(59)
  • 收藏
  • 关注

原创 Accelerated C++品读记(1)

前言: 起码有半年没有接触过C++了,之前打下的C++基础还算不错,现在打算读一读AC,通过这本书把之前大二学的C++知识理解一篇。在读的过程中发现这本书,确实是一本好书,这本书和其他C++的书有着一个很大的不同之处在于其是以驱动为模型来介绍C++这么课程的,不过读这本书需要你有一定的C++功底,那么你可以很块的接受并且读完,如果没有也没多大问题。第一篇品读记总结和介绍下AC 0章和1章所学到的

2013-12-22 16:57:07 966

原创 PHP中开发的良好习惯总结(持续更新) By ACReaper

最近在自己用php在写一个商城,再这个工程中学习到了很多的开发经验。 1.为了更好的调试和开发php,在开发状态中到php.ini设置开发的错误报告 在ubuntu中,其在/etc/php5/apache2/php.ini中。用命令打开后,找到 error_reporting = ALL & ~NOTICE; display_error = on; 2.在php中我们经常

2013-10-28 16:53:33 599

原创 VMbo下用ghost安装xp或者win7的方法 By ACReaper

很多人在VMBox中安装xp和win7后经常出现 FATAL: No bootable medium found ! System halted 的提示,其实这是因为你的硬盘没有先格式化。 所以解决方法如下: step1: 下载diskgen的镜像文件。 http://www.diskgenius.cn/download/DGDOS_ISO.zip s

2013-10-27 15:19:15 990

转载 Ubuntu LAMP安装

安装步骤 1.Install SSH Client and Server (for my remote access) sudo apt-get install ssh 2. Install Database Server(传言现在只能装5.0的版本,别的我没实践过) sudo apt-get install mysql-server-5.0 3. Install A

2013-10-27 00:01:15 741

原创 Ubuntu下mysql的安装 By ACReaper

在ubuntu下安装软件其实是十分的简便的只要用apt-get命令就会自动到软件源中收索下载并且安装。下面介绍mysql的安装。mysql数据库必须要有server端的进程和clien端进程,也就是cs模式。如果用php,要将php和mysql连接起来还要安装php5-mysql,也就是说一般情况下只要下载两个安装包 sudo apt-get install mysql-server sudo

2013-10-26 23:54:57 671

转载 ACM总结 by fennec@JLU

ACM总结(fennec) 其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受。郭老师有句话:你们这样做也是对的,不成功就成仁。让我的心也能安慰了不少。 我是从大一下学期开始接触ACM的,那时候我们学校才刚刚起步,siyee,wjiang师兄可以说是我的领路人了,冲名次,比做题真是一种幸福的感觉。 大二上学期很有幸与siyee队长,jack学长一起代表学校

2013-07-02 13:18:31 1090

原创 UVA 558 判断负环 By ACReaper

哎,好久没切题了,今天又来切题鸟,一定要坚持!!!至少每天一题! 这题本质就是判断图中有没有负环。我的第一反应就是用Bellman-ford算法解决,代码如下 #include #include #include using namespace std; typedef pair pii; const int maxn = 1006; const int INF = 0x2fff

2013-05-30 23:50:20 660

转载 Vim 基本配置

Vim基本配置   设置工作目录为当前编辑文件的目录 set bsdir=buffer set autochdir 编码设置 set enc=utf-8 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 语言设置 set langmenu=zh_CN.UTF-8 language message

2013-05-29 23:39:30 1588

原创 关于误更改/var下诺干的权限问题,导致系统启动提示The System is running in low-graphics mode问题解决 By ACReaper

这个问题,真他妈坑爹,本来是把ecshop装到/var/www下,更改权限时不小心把/var及其所有子目录都更改了,oh,my lady gaga,我以为是显卡驱动问题!fuck!。 解决方式:       1.提示The System is running in low-graphics mode后,点击确定,进入第二个界面      2.这里有四个选项,选择最后一个,然后等来到黑窗口时,

2013-05-25 02:35:41 7662

原创 Mysql数据库之count实践 By ACReaper

count函数真是个奇葩的函数,不过理解了也就不会错用了,首先,mysql中的数据库中的表其实就是一条条记录,记录其实又是C中的结构体变量,所以一张表其实可以看成是一个一维的结构体数组。 count函数,是统计结构体变量中某个列的值不为NULL的记录个数,当count(*)规定为读取表中所有记录个数,但是当count(某一个字段(结构体变量中的某一个元素值))时,会一直统计下去,除了值为NULL

2013-05-19 22:13:25 707

原创 UVA 10801 By ACReaper

Problem ? Lift Hopping Time Limit: 1 second Ted the bellhop: "I'm coming up and if there isn't a dead body by the time I get there, I'll make one myself. You!" Robert Rodriguez,

2013-05-15 22:13:03 701

原创 UVA 10986 By ACReaper

这题太水了,就不分析了。直接代码 #include #include #include using namespace std; const int maxn = 20006; const int INF = 0x6fffffff; typedef pair pii; priority_queue,greater >q; vector g[maxn]; void Dijkstra(int

2013-05-15 22:06:25 584

原创 uva 10369 By ACReaper

#include #include #include using namespace std; const int maxn_v = 1024; const int maxn_e = maxn_v * (maxn_v - 1) / 2; int u[maxn_e]; int v[maxn_e]; double w[maxn_e]; int r[maxn_e]; int fa[maxn_v];

2013-05-09 01:10:19 584

原创 uva 10369 By ACReaper

#include #include #include #include using namespace std; const int maxn_b = 755; const int maxn_e = maxn_b * (maxn_b - 1) /2; struct pos{ double x,y; }; pos A[maxn_b]; int p[maxn_b]; int u[maxn_e

2013-05-09 01:08:50 611

原创 UVA 10034 By ACReaper

#include #include #include #include using namespace std; const int maxn = 15024; int u[maxn]; int v[maxn]; double w[5 * maxn]; int r[5 * maxn]; int fa[maxn]; struct pos{ double x,y; }; pos A[maxn

2013-05-07 02:38:00 591

原创 Graveyard NEERC 2006,LA 3708 By ACReaper

#include #include using namespace std; int main(){ int n,m; while(scanf("%d%d",&n,&m) == 2){ double ans = 0.0; for(int i = 1; i < n; i++){ double pos = (double)i / n * (n + m);//个数得即为距离的反比,

2013-05-06 23:47:12 781

原创 Uva 11300 By ACReaper

这道题真的是太妙了!模型的转化,建立确实重要!学习了。 定理 1.对于线段上的点,其中点到所有点的距离之和为最短。 证明: 点数为偶数,则在中间两点见的任意位置移动,距离都不变!(可取偏左,偏右都一样)        点数为奇数,则中间点本来就存在,改点即为中间点 某型的建立:设xi表示第i点给第i - 1点的金币。则最小金币数即是|x1| + |x2| + ....

2013-05-06 12:54:25 638

原创 UVA 567 By ACReaper

这道题目,坑死我了,特别是数据输出的时候有句话 The test result line should contain the start country code A right-justified in columns 1 and 2; the string `` to " in columns 3 to 6; 呜呜,害哥格式错误,找了个半天,你妈呀!!!。题目的大意思就是给你一个图,求任

2013-05-04 16:30:05 781

原创 组合的生成之生成下一个组合 By ACReaper

生成下一个组合,其实原理很easy,听我慢慢道来也~ 在集合{1,2,3,4,...N}中生成r组合。我们假设当前生成的是{a1,a2,...ar},则当可以生成下一个组合时的极限条件就是ar还没达到最大那么ar继续加1,就是下一个组合,如果ar达到最大了,那么此时就要ar-1看是否达到最大,没有则加一,又因为a1 < a2 <.... < ar,也就是说接着在把后面的数都一次比前面一个数大一加

2013-05-03 15:57:31 808

原创 流网络浅析 By ACReaper

关于网络流,整整花了我一天时间,才看懂它再讲解什么,为了让初学者能更好理解,我打算写篇关于流网络的文章。 1.流之网络最大流模型 所谓的流网络其实也是图论的一部分,流网络是这样定义的,其每条边上都有两个值,一个称为flow流值,一个称为capacity,表示可通过的最大流值。 而,问题是这样的,在现实世界中,我们可以建立很多这样的模型,有一个起始点,我们称它为源点,还有一个点称为汇点

2013-05-02 15:29:11 730

原创 生成下一个排列 By ACReaper

生成下一个排列的算法有很多中,用递归来实现是最简单,最明了的。我下面介绍的不是按照递归了实现而是从实际问题分析,总结出的规律。 我们知道对于排列a1a2a3......an,如果aj 怎么判断,下一个排列的条件,这里我们贪心点,我们选择最后一个满足aj 一个刚好是,接着我们从第j+1,n位中选择大于aj最小的ak,把它和aj交换,这时从j+1位开始,依然保持着递减的次序,所以我们把它按照

2013-04-30 23:13:43 1009

原创 范德蒙很等式 By ACReaper

范德蒙很等式 ,所谓的范德蒙很等式,其实是基于这样一个问题: 有两个集合,元素个数分别为m,n,现在重中选出一共r个元素问有几种 选择方式,当然是C(m + n,r),其实它有等于 C(m,k) + C(n,r - k) (k = 0....r)k的不同取值的连加只和,为什么呢? 假设在m中取k个,n中就必须取r - k个,所以当然是这样,但是不要忘了k是变量 要并上所头可能,即连加上所

2013-04-30 22:52:01 870

原创 帕斯卡恒等式 By ACReaper

大家知道帕斯卡三角形吗?它就是基于帕斯卡很等式的。 帕斯卡恒等式其实很像动态规划,个人觉得。 计算C(n + 1,r)的值表示为C(n + 1,r) = C(n,r - 1) + C(n,r); 为什么?你能证明吗,其实证明很简单,我们知道C(n + 1,r)是在n + 1个元素中选择r个元素的无重复组合, 那么对于集合中的某个元素,要么选,要么不选,如果选的话就是C(n,r - 1),如

2013-04-30 22:45:47 3232

原创 图的多源点最短路问题和传递闭包之Floyd-Warshall算法 By ACReaper

我们知道求图的最短路有Dijkstra应用于无负权的算法,也有应用于有负权的Bellman0-Ford算法,但是当源点有多个呢?难道我们要调用n次的Dijkstra算法?有没有其它的算法呢?这是当然的,Floyd-Warshall就是用来解决这个问题的,也许有学过的人会说这个算法的效率太低,为O(n^3)但是,当摊销到每一条路上时,其效率为O(V)还是很高的,很实用的一个算法。 Floy

2013-04-30 22:33:57 1237

原创 Bellman-Ford算法之计算含有负权值的图(但是不含权值为负的回路) By ACReaper

下面代码为最简单的Bellman-Ford算法的表示,可以用队列进行优化。 #include #define MAXN 1000 int u[MAXN + 1]; int v[MAXN + 1]; int w[MAXN + 1]; int d[MAXN + 1]; int n,m; int main(){ while(scanf("%d%d",&n,&m) != EOF){

2013-04-29 17:09:20 1285

原创 Dijkstra算法之优先队列优化版本 By ACReaper

Dijksta算法中,如果我们采用的是邻接矩阵来存的,第一点浪费的空间比较多,第二点我们知道算法的时间复杂度在O(n*n),这样的算法可以说并不是很好,所以我们考虑优化它,那么可以从哪些地方优化呢,首先我们可以优化存储结构,采用邻接表来存储,其次我们可以用优先队列来排序大小,其时间复杂度大大降低。代码如下。 需要注意的是pair是按照第一个元素的大小排序,如果相同才按照第二个,所以我们要把d[i

2013-04-29 02:26:16 3634

原创 for循环中控制循环变量的总结 By ACReaper

在for循环中,我们有时会想要在for循环中多个地方,改变当前控制for循环变量的值,让它按照这个值重新循环。一个解决方法是,用一个布尔值isChangeI,在改变后没这个值设置为true,最后再用if(isChangeI)判断,如果为真,则变量减减,这是因为在这从循环结束时,变量i会自动加1,从而跳过了我们所期待的值,所以要修正偏差。 我们将该细节问题称之为: for循环中,改变循环

2013-04-28 12:39:33 1581

原创 Dijkstra 之最短路径算法(无优化版本) By ACReaper

最短路径,其实就是求我们日常生活中,从某点到达某点的最短路径,Dijkstra用了一种变通的方式,它是求出从源点到达所有点的最短路径长度。   分析: 这个算法采用的是贪心思想,而贪心算法能否达到最后,有两个必要不充分条件 1.必须要有最优子结构 2.必须具备贪心选择属性 1.最优子结构: 我们设d(i,j)表示从,结点Vi到Vj的最短路径值,则d(i,j) = d(i,

2013-04-26 11:03:26 689

原创 可重复组合的应用 By ACReaper

可重复组合应用范围十分广泛,如计算一元多项式的解的个数,如,用来计算程序的复杂程度等。 let me show you 请读下面这段代码 k = 0; for(int i1 = 1 ; i1 for(int i2 = 1 ; i2 i1 ; i2++) for(int i3 = 1 ;i3 i2; i3++) ... ... ... for(int im = 1; i

2013-04-24 22:27:32 859

原创 最小生成树之Kruskal算法(图论) By ACReaper

这是利用并查集实现的比较高效的Kruskal算法,用于算出最小生成树的权! 注意该算法并没有维护最小生成树的形态,而只是算出其权值而已,所以离实际应用还有距离! #include #include #define MAXN 1000 int v[MAXN]; int u[MAXN]; int w[MAXN]; int p[MAXN]; int r[MAXN]; int n,m; i

2013-04-23 23:21:33 654

原创 有重复的组合计数 By ACReaper

我们都知道没有重复的组合,其计算方法本质上就在有n个元素的集合中选则r个元素的子集个数,所以可以推出其计算公式为C(n,r) 至于它的公式推导,可以这样看,我们可以先选出这些子集后,对这些r个元素的集合,进行没有重复的排列也就是p(r,r).则从n个元素 的集合中无重复的进行r排列,即p(n,r) = p(r,r) * C(n,r),而p(n,r)的公式我们推导过了,所以可以很方便的推算出C(

2013-04-23 22:58:10 1211

原创 表达式树(图论) By ACReaper

形如6*(2+3)+9计算其值,要是在面向对象的语言中,用脱窗口的方法是很好解决的,是不。不过我们要写的是算法。 思想: 通过观察表达式我们可以发现一个规律,就是我们可以先找到最后运算的符号,然后计算其左边,其右边,接着把它连接如符号计算。这个思想和简单,也很容易理解,其实这个思想所建立的树也就是后缀树。 代码实现如下: #include #include cons

2013-04-23 10:58:22 640

原创 无根树转为有根数(图论) By ACReaper

给结点分别编号,输入这个无向图的的边,它只有n - 1条边,所以本质上也是树,但是我们还没有确定树的root的结点,下面我们来构造一颗树。 我们用邻接矩阵来存下整个图,这里用C++里的vector这中数据结构,它是可以变长的,所以存下之后,空间复杂度就不是n * n了,而是n。 给出一组数据: 一共8个结点,从0----7编号。我们假定以1为根结点构建树。 边数据如下: 0

2013-04-22 14:47:01 2432

原创 离散概率初步 By ACReaper

waiting

2013-04-21 16:23:13 607

原创 编码与解码(数论中的计数问题) By ACReaper

waiting

2013-04-21 16:22:38 692

原创 小于n且与n互素的个数(数论中的计数问题) By ACReaper

waiting

2013-04-21 16:22:00 903

原创 约数的个数(数论中的计数问题) By ACReaper

waiting

2013-04-21 16:21:05 579

原创 无关的元素(排列与组合) By ACReaper

waiting

2013-04-21 16:20:29 552

原创 杨辉三角与二项式定理(排列与组合) By ACReaper

由帕斯卡恒等式我们可以很轻易的总结出杨辉三角形的规律,其实这个三角形也叫帕斯卡三角形。 帕斯卡i恒等式: 即(n + 1)(k) = (n)(k) + (n)(k - 1),这个恒等式很好证明也很容易理解,我们采用组合证明来证明它,对于某集合有n + 1个元素,求其有k个元素的子集个数即为(n + 1)(k),我们假设a是这个集合的元素,则a要么选进这k个元素,要么不选,根据加法定理就有(n

2013-04-21 16:19:55 901

原创 模线性方程(数论初步) By ACReaper

与直线上的点本质一样,不再写了。

2013-04-21 11:18:54 532

空空如也

空空如也

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

TA关注的人

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