04 2016 档案
摘要:位操作一共有6种形式:<<,>>,&,|,^,~; 1.左移操作符<<:左移操作符将整数的二进制向左移若干位,将最高若干位挤掉,并在低位补0 如: 实际上:a<<1,a右移1位表示a*2,a<<m表示a*2^m 2.右移操作符>>:右移操作符将整数的二进制向右移若干位,将最低若干位挤掉,并在高位补0
阅读全文
摘要:典型的状态压缩DP问题。第i行的取法只受到第i-1行的影响。首先每一行的取法要相容(不能有两个相邻),然后相邻行之间也要相容。将每一个格子看做两种状态,1表示取,0表示不取。这样每一行就是一个01串,恰好可以看做是一个二进制数,那么该二进制数对应的十进制整数可以唯一的表示为当前第 i 行的状态。定义
阅读全文
摘要:%%unifrnd函数的使用 %unifrnd函数可以创建随机的连续均匀分布的数组,一般式为R=unifrnd(A,B); %A和B是标量或者相同维数的行向量或者列向量。R=unifrnd(A,B,[m,n])表示生成m*n的 %矩阵,他们的数值在A,B之间,看下面例子 %例1 若A,B都是标量 R=unifrnd(3,4);%运行结果为3到4之间的一个随机数 %例2 若A是标量,B是一维行向量...
阅读全文
摘要:在解题时候,通常有遇到设置为无穷大的情况。这时候通常用0x7fffffff来设置,他是计算机32位整数最大数,相当于INT_MAX.但是在很多时候这样设置并不会是最佳的,还可能导致bug,这是由于我们有的时候希望无穷大+无穷大=无穷大,比如在prim算法或者Dijstra算法中对边的松弛操作,这个时
阅读全文
摘要:SPFA:Shortest Path Faster Algoriithm 快速最短路径算法 SPFA的核心算法就是Bell-Ford算法。它使用一个队列或者一个栈来减少了Bell-Ford中不必要的松弛。可以处理负边和环的情况,他的使用比Dijstra更广泛。但是未经优化的SPFA算法时间复杂度不稳
阅读全文
摘要:在实际应用中为了防止数据爆出,在计算a*b%m和x^n%m时,可以采用此方法。在数论中有以下结论: a*b%m=((a%m)*(b*m))%m ; (a+b)%m=(a%m+b%m)%m ; 例题:HDU 5666 Segment Time Limit: 2000/1000 MS (Java/Oth
阅读全文
摘要://Bellman-Ford 算法 #include using namespace std; #define MAX_SIZE 100 #define MAX_NUMBER INT_MAX/2 struct Edge { int u, v; //表示有向边 int w; //边的权重 }; Edge edge[MAX_SIZE]; int dis[MAX...
阅读全文
摘要:这是一道BFS的搜索题目,只是搜索范围变为了三维。定义数组visit[x][y][z]来标记空间位置,x表示楼层,y和z表示相应楼层的平面坐标。
阅读全文
摘要:这个题目需要注意以下几点: 1)注意界线问题,箱子和人不可以越界。 2)需要判断人是否可以到达人推箱子的指定位置。 3)不可以用箱子作为标记,因为箱子可以走原来走过的地方,我们用箱子和人推箱子的方向来进行重判。定义一个Hash[8][8][8][8]来标记。
阅读全文

浙公网安备 33010602011771号