自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Poj1465 Multiple(BFS+余数判重)

<br />题意:给定一个自然数N,以及M个不同的数字X1,X2,...Xm,求N的最小正整数倍数,满足这个数的每个数字都是M个数字中的其中一个<br />算法:对于给定两个数A,B,如果A和B模N都相同,设为C,即:<br />A=x*N+C<br />B=y*N+C<br />那么如果在A后面加上一个数字能够被N整除,则在B后面加上这个数字也肯定可以被N整除<br />即:(A*10+X)%N==(B*10+X)%N<br />因此可以利用模N的结果进行判重,只保留相同余数的最小数,于是采用BFS搜索<

2011-02-27 14:22:00 1203

原创 关于欧拉函数及Sicily1085的解法

<br />1. 数论中的欧拉函数复习<br />F(x): 1~x中与x互质的数的个数,称为欧拉函数<br />欧拉函数是积性函数,即F(x*y)=F(x)*F(y),如果x和y互质<br />另外:F(x)=x-1,如果x是素数<br />F(xp)=xp-xp-1=xp-1*(x-1)<br />于是关于欧拉函数的求法如下:F(x)=F(x1p1*x2p2*...xnpn),然后采用上式求解<br />代码如下:<br />long long emular(int x){ long long

2010-11-21 02:44:00 756

原创 树的Prufer 编码和最小生成树计数

1. 一棵标号树的Pufer编码规则如下:找到标号最小的叶子节点,输出与它相邻的节点到prufer 序列, 将该叶子节点删去,反复操作,直至剩余2个节点。2. 由Pufer编码生成树:任何一个prufer 序列可以唯一对应到一棵有标号的树,首先标记所有节点为未删除 依次扫描prufer 序列中的数,比如当前扫描到第k个数u,说明有一个叶子节点连到u,并在当前操作中被删除,找一个标号最小的未被标记为删除的且在prufer 序列第k个位置后未出现过的节点v,在u,v间连边并将v删除,反复操作,最后剩两个节点未被

2010-11-17 23:23:00 6423 1

原创 Sicily 1047 Super Snooker

<br />题意:给定A,B两个数以及连续的N个数,问能否把这连续的N个数分别分配给A和B,使得分完之后A和B相等<br />解法:<br />1. 首先如果A和B之差,正好等于N个数之和,那明显可以<br />2. 考虑N是偶数的情况,就是能把这N个数分成相同个数的两堆<br />    则如果N%4==0,那么这两堆的差的范围是:0~N*N/4    间隔为2...  最大的差为a1,a2,...,aN/2和 aN/2+1,aN/2+2,...,aN<br />       如果N%4!=0,   那么

2010-11-16 21:49:00 1071 1

原创 rmp算法详细介绍&&poj3264

<br />RMQ(Range Minimum/Maximum Query)问题:<br />RMQ问题是给定一个区间,求这个区间中的最大或最小值的问题<br />RMQ采用动态规划的思想来求解:(st算法:Square Table):<br />预处理:<br />预处理使用DP的思想,f(i, j)表示[i, i+2^j - 1]区间中的最小值。<br />例如,f(0, 0)表示[0,0]之间的最小值,就是num[0], f(0, 2)表示[0, 3]之间的最小值, f(2, 4)表示[2, 17]之

2010-06-16 15:08:00 1824

原创 sicily 1763传球游戏

题目描述:游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止问:有多少种不同的传球方法可以使得从A手里开始传的球,传了m次以后,又回到A手里。两种传球的方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有3个同学1号、2号、3号,并假设小蛮为1号,球传了3次回到小蛮手里的方式有1->2->3->1和1->3->2->1,共2种。 解法:直

2010-06-15 22:19:00 1178 1

原创 关于 sicily1556 Finding Seats

题目描述:给定一个矩形座位表的行数和列数,在一个矩形座位表中找到一个含有给定个空位的矩形 ,使它面积最小例如3 5 5...XX.X.XXXX...  答案是6解法:首先用int seatnum[305][305]表示从左上角到i,j所包含的空位置数用函数inline int getseat(int i,int j,int ii,int jj)表示以i,j为左上角,ii,jj为右上角的矩形所包含的空位置数用check[305][305][0]:表示扫描线i,j当前包含的位置数,check[305][305]

2010-06-15 21:19:00 425

原创 poj3468_线段树的应用

<br />题意:给定一个数组,给定两种区间操作,一种是往一个区间中的每一个位置加上一个数,另一种是询问某个区间的数的和<br />解法:线段树<br />结构定义:<br />struct Node{ int l,r; long long tsum,csum; //其中tsum表示对整个区间的改变量,例如加入[1,5],则所有在区间[1,5]的祖先位置的都要加 //csum表示该区间的改变 Node() { l=r=tsum=csum=0; }};<br />代码

2010-06-01 00:30:00 350

原创 sicily 1888循环队列的最大子段和

题意:求一个循环队列的最大子段和算法:首先当作不循环的,用dp方法求出最大子段和,然后求出第二个数以后的不循环的最小子段和,看前者和total-后者谁更大,即可代码如下:#include using namespace std;long long A;int t,n;int main(){ scanf("%d",&t); int i; long long

2010-05-30 03:41:00 499

原创 poj2479_简单动态规划

题意:给定一个序列,在这个序列中任取不相交的两段,使得和最大,求最大和解法:对于每个位置i,保留从开头到该位置能找到最大连续段的和,方法为从前往后扫,保留最大段tmp,和一个能加到位置i的最大数sum,如果sum+A[i]>tmp,则tmp=sum+A[i];如果sum#include using namespace std;int A[50005];int matrix[50

2010-05-30 02:47:00 469

原创 poj2378_树型DP

题目大意:给定一棵树的n个节点和n-1条边,对于每个节点,要求去掉它之后所有子树的最大节点数,并输出最大节点数小于n/2的节点编号算法:用树型dp实现,对于每个节点,保留包含该点的子树的节点数son,并且保留去掉改点后的最大子树的节点数val结构定义:struct Node{ int val; //存放去掉该点剩余的树中最大节点数 i

2010-05-28 11:45:00 917

原创 关于C++中的静态成员和静态成员函数

1. 静态成员变量要在类外初始化赋值,原因就是静态成员为类的所有对象共同所有,不能在构造函数或类中进行初始化,否则每当申请一个对象就重新赋值,就没有任何意义了....静态成员变量的一个很好的作用就是用来统计类的对象实例存在的个数。初始化如下:class base{ private: static int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 }

2010-05-25 20:08:00 408

原创 C++面向对象的常考知识点

1. C++的空类默认产生哪些成员函数?    答:默认构造函数,拷贝构造函数,析构函数,赋值函数2. C++中struct和Class有什么区别?    答:唯一的区别在于struct里面默认的访问控制是public,而Class中默认的访问控制是private,struct也可以有构造函数,析构函数,也可以继承,它存在的唯一意义就是让C++的编译器能兼容以前用C语言开发的项目

2010-05-25 19:05:00 839

原创 poj1961_KMP算法中next数组的应用

1.题意:给定一个字符串,要求对字符串的每个位置i进行判断,判断前i个字符是否可以写成某个别的字符串的重复,若可以,求出最多可以写成多少个别的字符串的重复。比如串aabaabaab可以写成3个aab的重复2.解法kmp算法中next数组的应用,由于next[i]=k表示字符串a1...ai最多前k个字符和后k个字符对应相同,这样可以找出向前移动的字符个数L,即为最短的重复串长(循环节)

2010-05-21 22:29:00 391

原创 KMP匹配算法详解

     假如,A="abababaababacb",B="ababacb",我们来看看KMP是怎么工作的。我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,i是不断增加的,随着i的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符(j当然越大越好),现在需要检验A[i+1]和B[j+1]的关系。当A[i+1]=B[j+1]

2010-05-21 20:20:00 367

原创 卡特兰数及其应用

令h(1)=1,h(0)=1,catalan数满足递归式:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2)该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...)卡特兰数的应用1. 火车出栈的序列总数问题2. P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的

2010-05-15 23:25:00 365

原创 放苹果问题的递推思路

1. 组合数的递推C(n,m)=C(n-1,m-1)+C(n-1,m)表示选择或者不选择第一个数... 2. 有n个相同的苹果,m个相同的盘子,把n个苹果放入m个盘子且不允许有盘子是空的,问有多少种不同的放法D(n,m)=D(n-1,m-1)+D(n-1,m)*m其中D(n,m)表示n个苹果放入m个盘子且不空的放法

2010-05-15 23:20:00 727

原创 组合数计算技巧

C(n,m)=C(n-1,m-1)+C(n-1,m)设想第一个数在或不在所选的范围里面即可...

2010-05-15 16:40:00 574

原创 ASP中的注意事项

最近帮老师做一个国际会议的网站,用asp做的,虽然很简单,但配置的过程也有些东西需要注意的,否则检查不出来,很浪费时间,注意事项罗列如下:1. 网站的权限设定,默认情况下,不能访问“父文件夹”,这时候需要在iis的asp选项中设置,“打开功能”->“启用父路径”2. 数据库有时候只能读取,没法写入,可能是因为文件夹没有写入的权限,这时候也是要对iis的asp进行配置“编辑权限”->“安全”

2010-05-14 22:56:00 358

原创 sicily 1889解题报告(bfs维护两个队列,实现最短路径)

题目:ProblemMax is lately playing a game. Given a n*m board, there are only two types of grid on it: # and @. And the rule is simple: Given a start position to Max, and Max can move to fou

2010-05-14 02:15:00 547

原创 优先队列Dijkstra实现最短路算法

1. 优先队列采用STL中的priority_queue,用法如下:#include using namespace std;struct Node{ int id; int dis;};bool operator<(const Node a,const Node b){ return a.dis>b.dis;}priority_queue qe;

2010-05-13 21:02:00 662

空空如也

空空如也

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

TA关注的人

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