
ACM算法
文章平均质量分 54
bingshangjiguang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 · 571 阅读 · 0 评论 -
关于欧拉函数及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 · 792 阅读 · 0 评论 -
树的Prufer 编码和最小生成树计数
1. 一棵标号树的Pufer编码规则如下:找到标号最小的叶子节点,输出与它相邻的节点到prufer 序列, 将该叶子节点删去,反复操作,直至剩余2个节点。2. 由Pufer编码生成树:任何一个prufer 序列可以唯一对应到一棵有标号的树,首先标记所有节点为未删除 依次扫描prufer 序列中的数,比如当前扫描到第k个数u,说明有一个叶子节点连到u,并在当前操作中被删除,找一个标号最小的未被标记为删除的且在prufer 序列第k个位置后未出现过的节点v,在u,v间连边并将v删除,反复操作,最后剩两个节点未被原创 2010-11-17 23:23:00 · 6524 阅读 · 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 · 1109 阅读 · 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 · 2006 阅读 · 0 评论 -
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 · 1220 阅读 · 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 · 454 阅读 · 0 评论 -
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 · 382 阅读 · 0 评论 -
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 · 521 阅读 · 0 评论 -
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 · 501 阅读 · 0 评论 -
poj2378_树型DP
题目大意:给定一棵树的n个节点和n-1条边,对于每个节点,要求去掉它之后所有子树的最大节点数,并输出最大节点数小于n/2的节点编号算法:用树型dp实现,对于每个节点,保留包含该点的子树的节点数son,并且保留去掉改点后的最大子树的节点数val结构定义:struct Node{ int val; //存放去掉该点剩余的树中最大节点数 i原创 2010-05-28 11:45:00 · 945 阅读 · 0 评论 -
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 · 400 阅读 · 0 评论 -
组合数计算技巧
C(n,m)=C(n-1,m-1)+C(n-1,m)设想第一个数在或不在所选的范围里面即可...原创 2010-05-15 16:40:00 · 607 阅读 · 0 评论 -
放苹果问题的递推思路
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 · 807 阅读 · 0 评论 -
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 · 1241 阅读 · 0 评论