自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C语言ASM汇编内嵌语法

GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCC Inline ASM——GCC内联汇编。这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码中,另外也允许我们直接写 C/C++代码中使用汇编编写简洁高效的代码。1.基本内联汇编GCC中基本的内联汇编非常易懂,我们先来看两个简单的例子:__asm__("movl %e

2015-03-29 20:50:11 599

转载 代码规范与代码复审

在第9章中,同学们完成了WC程序,经过评比,九条的程序获得了第一名。这时,阿超说,现代软件产业经过几十年的发展,已经不可能出现一个人单枪匹马完成一个软件的事情了,软件都是在相互合作中完成的。阿超建议大家互相看看别人的代码,在TFS中每个人都把各自项目的权限放宽,允许别人访问,交流一下意见。两个小时后,小飞来抱怨说,九条的代码都是一行到底,随意缩进,跟他提了意见,他还说“编译通过就行了”。他

2015-03-25 22:40:51 944

原创 树形问题_汇总

表达式树#define maxn 1000int lch[maxn],rch[maxn],char op[maxn];//数组表示树形结构int nc=0;//结点序号int build_tree(char *s,int x,int y){int i,c1=-1,c2=-1,p=0;int u;if(y-x==1){u=++nc;lch[u]=rch

2015-03-14 09:41:37 450

原创 矩阵快速运算_总结

矩阵乘法快速幂struct matrix{int mat[size][size];matrix(){int i,j;for(i=0;ifor(j=0;jmat[i][j]=0;}}; matrix mul(matrix a,matrix b){matrix ret;int i,j,k;for(i=0;i

2015-03-14 09:40:31 1060

原创 qsort_总结

整型#includeint cmp(const void *a,const void *b ){return *(int*)a-*(int*)b;//从小到大//*(int*)b-*(int*)a从大到小}字符型int cmp(const void *a,const void *b){return *(char*)a-*(char*)b;}

2015-03-14 09:37:15 477

转载 划分树

划分树和归并树都是用线段树作为辅助的,原理是基于 快排 和 归并排序 的。划分树的建树过程基本就是模拟快排过程,取一个已经排过序的区间中值,然后把小于中值的点放左边,大于的放右边。并且记录d层第i个数之前(包括i)小于中值的放在左边的数。 #include #include #include #include using namespace

2015-03-14 09:35:18 400

转载 组合数C(n,m)

问题:求解组合数C(n,m),即从n个相同物品中取出m个的方案数,由于结果可能非常大,对结果模10007即可。方案一暴力求解,C(n,m)=n*(n-1)*...*(n-m+1)/m!int Combination(int n, int m){const int M = 10007;int ans = 1;for(int i=n;

2015-03-14 09:35:17 2702

原创 几何-直线分平面问题

(1) n条直线最多分平面问题      题目大致如:n条直线,最多可以把平面分为多少个区域。一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。而每条射线和线断将以有的区域一分为二。这样就多出

2015-03-14 09:33:18 745

原创 c++_sort

排序(sort):所有sort算法介绍:使用的迭代器(iterator)都需是随机迭代器(RadomAccessIterator)1.      所有STL sort算法函数的名字列表:函数名功能描述sort对给定区间所有元素进行排序stable_sort对给定区

2015-03-14 09:32:30 365

原创 c++_priority_queue

STL之优先队列原本以为priority_queue很简单,才知道原来懂的只是最简单的形式。头文件:#include优先队列,也就是原来我们学过的堆,按照自己定义的优先级出队时。默认情况下底层是以Vector实现的heap。既然是队列,也就只有入队、出队、判空、大小的操作,并不具备查找功能。函数列表:empty() 如果优先队列为空,则返回真 p

2015-03-14 09:30:26 348

原创 c++_algorithm

accumlate : iterator 对标志的序列中的元素之和,加到一个由 init 指定的初始值上。重载的版本不再做加法,而是传进来的二元操作符被应用到元素上。adjacent_different :创建一个新序列,该序列的每个新值都代表了当前元素与上一个元素的差。重载版本用指定的二元操作计算相邻元素的差。adjacent_find :在 iterator 对标志的元素范围内

2015-03-14 09:29:57 352

原创 c++_string

首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下:     #include //注意这里不是string.h string.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单:       string Str;这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了st

2015-03-14 09:29:22 383

转载 无向连通图的生成树个数

我们知道,每个无向连通图都会有自己的生成树。但是大家更熟悉的,是无向图的最小生成树(MST)算法。本文旨在讨论计算无向连通图的生成树个数的时间复杂度为O(n3)的方法。另外一种时间效率高的递推式方法的讲解在文末附有链接。      我们可以利用矩阵在O(n3)的时间内求出无向连通图的生成树个数。对于一个无向连通图,我们可以根据以下规则列出一个矩阵M:主对角线上的值M(i,i)为

2015-03-14 09:27:37 9370 1

原创 c++_set

set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)set模板

2015-03-14 09:26:21 366

原创 测试素数_Miller Rabbin

伪素数:如果n是一个正整数,如果存在和n互素的正整数a满足a^n-1≡1(mod n),我们说n是基于a的伪素数。如果一个数是伪素数,它几乎肯定是素数。(即下面的费马小定理)费马小定理是数论中的一个重要定理,其内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1。 include

2015-03-14 09:25:49 469

原创 hash函数_sumary

// ELF Hash Function  unsigned int ELFHash(char *str)  {      unsigned int hash = 0;      unsigned int x = 0;        while (*str)      {          hash = (hash         if ((x = hash &

2015-03-14 09:23:25 349

原创 树状数组

基本概念设A[1..N]为一个长为N的序列,即对于序列A有以下操作:【1】修改操作:将A[x]的值加上c;【2】求和操作:求此时A[l..r]的和。 }       原数组a}       树状数组C  C1=a1C2=a1+a2C3=a3C4=a1+a2+a3+a4C5=a5C6=a5

2015-03-14 09:23:10 328

原创 背包问题_模板

背包总结int dp[M];    // dp[i][k] : 第i分组中 消耗为k时 的最优价值  int n[50+10]; // 每种的个数  int v[50+10]; // 每种的价值    void ZeroOnePack(int cost,int value ,int max_cost){      for (int i = max_cost; i >= co

2015-03-14 09:22:36 472

原创 Linux内核学习(1)_C程序执行过程

理论预备知识存储程序计算机工作模型冯诺依曼结构,透明计算颠覆了冯诺依曼结构?存储程序计算机(指硬件)应由运算器、存储器、控制器、输入设备和输出设备五大基本部件组成;计算机内部采用二进制来表示指令和数据;将编好的程序和原始数据事先存入存储器中,然后启动计算机工作,这就是存储程序的基本含义.指令和数据都是二进制信息是没有什么区别的,指令和数据只是应用上的含义

2015-03-13 23:24:45 457

转载 斐波那契数列

斐波那契序列 集锦 (转)[定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质其实,结合“互质”的定义,和一个很经典的算法就可以轻松证明 对,就是辗转相除法 互质的定义就是最大公约数为1数学归纳法是很有用的证明方法,我们接下来这个定理用数学归纳法就很好证明: [定理2]若i为奇数, f(i)*f(i)

2015-03-13 10:22:47 1597

转载 Ferrers_图像

Ferrers图像具有如下性质:1.    每一层至少有一个格子。2.    第一行与第一列互换,第二行与第二列互换,……,即上图绕虚线轴旋转所得的图仍然是Ferrers图像。这个的两个Ferers图像称为一对共轭的Ferrers图像。利用Ferrers图像可以得到整数拆分的非常有趣的结果。(a) 整数n拆分成k个数的和的拆分数,和数n拆分成最大数为k的拆分数相

2015-03-13 10:19:15 1962

原创 C++_hash_set

SGI STL是最健壮的STL实现之一,增加了很多扩充的容器,包括hash_set、hash_map、slist(单链表)、rope(它是一个string的变种,对非常大型的字符串、字符串的快速连接和取字串等操作进行了优化)。一、构造函数      默认构造函数、部分后全部复制另外一个hash_sethash_set > > hs1;hs1.insert(10);h

2015-03-13 10:18:33 7169

原创 线段树_模板

#define lson l,m,rt#define rson m+1,r,rt#define maxn 111111int tree[maxnint col[maxnint f;void pushup(int rt){         tree[rt]=tree[rt        //max[rt]=max[rt}

2015-03-13 10:16:04 377

原创 博弈_总结

有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 

2015-03-13 10:15:04 335

原创 计算几何_模板

#define eps 1e-10#define infinity 1e20struct Lpoint{    double x,y;Lpoint(double x=0,double y=0):x(x),y(y){}};typedef Lpoint Ldir;/*struct Ldir{double dx,dy;

2015-03-13 10:13:37 357

原创 c++_vector

构造函数语法:C++ Vectors可以使用以下任意一种参数方式构造:vector();    //无参数 - 构造一个空的vectorvector( size_type num, const TYPE &val );   //数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vectorvector( const vector &

2015-03-13 10:12:00 347

原创 动态规划_总结

1.   按状态类型分写在前面:从状态类型分,并不表示一题只从属于一类。其实一类只是一种状态的表示方法。可以好几种方法组合成一个状态,来解决问题。1.1. 编号(长度)动态规划共性总结本类的状态是基础的基础,大部分的动态规划都要用到它,成为一个维。一般来说,有两种编号的状态:状态(i)表示前i个元素决策组成的一个状态。状态(i)表示用

2015-03-13 10:09:53 338

原创 后缀数组_模板

倍增算法#define maxn 1000001int wa[maxn],wb[maxn],wv[maxn],wws[maxn];int cmp(int *r,int a,int b,int l){return r[a]==r[b]&&r[a+l]==r[b+l];}void da(int *r,int *sa,int n,int m){    int i,j,p,*x=w

2015-03-13 10:09:38 480

原创 RMQ (Range Minimum/Maximum Query)问题

**************************************************************************************************************一维RMQ查找最大值下标模板一维RMQ模版二维RMQ模板**********************************

2015-03-13 10:08:38 307

原创 C++_输出格式控制

setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6,所以不管数据是多少,都只输出六位。如果setprecision(n)与setiosflags(ios::fixed)或者setiosflags(ios_base::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。 如果与setiosn

2015-03-13 10:06:21 517

原创 五边形数定理

五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性。欧拉函数的展开式如下:亦即欧拉函数展开后,有些次方项被消去,只留下次方项为1, 2, 5, 7, 12, ...的项次,留下来的次方恰为广义五边形数。若将上式视为幂级数,其收敛半径为1,不过若只是当作形式幂级数(formal power series)来考虑,就不会考虑其收敛半径。

2015-03-13 10:03:49 969

原创 c++_multimap

/* * ******************************************** *  multimap多重映照容器的基础说明: ******************************************** * * multimap多重映照容器:容器的数据结构采用红黑树进行管理 * multimap的所有元素

2015-03-13 10:01:58 525

转载 有向图强连通分量_Tarjan

[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双连通图、割点与桥]

2015-03-13 09:59:29 430

转载 (A^B mod C)|(a^(n!) mod c)

1.当a,b,c 都比较小的时候,可以使用赤裸裸的暴力伪代码:v:=1;for i := 1 to b beginv:=v*a;v:=v mod c;end这也是我们在第一次遇到这种问题的时候首先能想到的.2.a,b,c都比较大的时候这里需要考虑c的大小了,假设c*cb比较大的话使用1的方法显然时间上是承受不了的,所以可以利用所谓的二分法.b=b

2015-03-13 09:58:34 1047

转载 树链剖分_模板

spoj QTREE题目:给出一棵树,有两种操作:1.修改一条边的边权。2.询问节点a到b的最大边权。 直接粘代码。 #include #include #include #include #include

2015-03-13 09:57:57 386

原创 C_rand函数

srand()就是给rand()提供种子seed1,先看一个例子#include #include #include using namespace std;int main( void ){int i;/* Seed the random-number generator with current time so that* the numbers

2015-03-13 09:55:29 431

原创 将无限循环小数化成分数

一、纯循环小数化分数从小数点后面第一位就循环的小数叫做纯循环小数。怎样把它化为分数呢?看下面例题。把纯循环小数化分数:纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的数都是9。9的个数与循环节的位数相同。能约分的要约分。二、混循环小数化分数不是从小数点后第一位就循环的小数叫混循环小数。怎样把混循环小数化为分数呢? 把混循环小

2015-03-12 16:48:25 1658

转载 Aho-Corasick算法

1、概述Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。好了,我们先看下最原始的多模式匹配算法:主串T,n=strlen(T)。模式串Pi mi = strlen

2015-03-12 16:47:45 502

原创 Rabin-Karp算法

字符串匹配(String matching)问题的形式定义: 假设文本(Text)是一个长度为n的数组T[1…n], 模式(Pattern)是一个长度为m ≤ n.的数组P[1..m];. 又假设P和T中的元素都属于有限字母表Σ 中的字符。 P和T常称为字符串。如果0 ≤ s ≤ n – m 且T[s+1..s+m]=P[1…m], 则说P在T中出现且位移为s,此时成s为一个有

2015-03-12 16:45:44 443

原创 最小圆覆盖

最小圆覆盖。神奇的随机算法。当点以随机的顺序加入时期望复杂度是线性的。  algorithm:  A、令Ci表示为前i个点的最小覆盖圆。当加入新点pi时如果pi不在Ci-1里那么pi必定在Ci的边界上。  B、再从新考虑这样一个问题,Ci为前i个点最小覆盖圆且p在Ci的的边界上!同理加入新点pi时如果p  i不在Ci-1里那么pi必定在Ci的边界上。这时我们就包含了两个点在这个

2015-03-12 16:44:52 375

空空如也

空空如也

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

TA关注的人

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