2020-09-05

2020-09-05  本文已影响0人  好之者不如乐之者

BFS

初始化:与初始点相关的状态放入队列中
while (队列非空) {
  取队列最前面的状态
  将该状态弄出队列
  将该状态的状态标记为visited
  然后判断状态是否满足要求,进行操作
  对状态进行“展开”,即对状态可以到达的点进行循环
  对上述选出的状态进行过滤,过程如下:
    1.看有没有visited
    2.看该状态是否越界
  将过滤完的状态放入队列尾部
//  将过滤完的状态标记为visited
}

队列的使用:queue<类型> q,

快速幂

快速幂的存在可以将a^b除以一个数的余数可以较快算出来,比如a^b可以由a^{b/2}的平方推出来。快速幂通过计算低次幂的,累计相乘得到高次幂的余数,其复杂度由O(n)变为了O(logn)

DP记录路径的方法

记录方法是用二进制的角度看待这样一个问题,比如longlong有64位,每一位的1表示选中,每一位的0表示未选中,假如现在的状态是n这样一个数,而对于第m个物体,如果我们要将它选上,则应进行操作n|1<<m, 若要将它不选上,则要进行操作n异或1<<m这样就可以将第m位不选上,如果想要判断第m位上有没有选上,那么就可以使用n&1<<m检查这个值是否为n即可,但是更多位下的(如超过64位的)还没有解决的思路。

上一篇 下一篇

猜你喜欢

热点阅读