2021-09-24

1.动态规划

1.1 线性DP:

线性DP是动态规划问题中的一类问题,指状态之间有线性关系的动态规划问题。

2.2 背包问题:

背包问题(Knapsack problem)是一种组合优化的NP完全(NP-Complete,NPC)问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。NPC问题是没有多项式时间复杂度的解法的,但是利用动态规划,我们可以以伪多项式时间复杂度求解背包问题。

2.数学问题

2.1 位运算(&、|、^、~、>>、<<

位运算就是基于整数的二进制表示进行的运算。由于计算机内部就是以二进制来存储数据,位运算是相当快的。基本的位运算共6种,分别为按位与、按位或、按位异或、按位取反、左移和右移。

  •    与、或、异或(&、|、^):

        与:只有两个对应位都为1时才为1

        或:只要两个对应位中有一个1时就为1

        异或:只有两个对应位不同时才为1

  •    取反(~):

       取反是对一个数num进行的位运算,即单目运算。

       取反暂无默认的数学符号表示,其对应的运算符为 ~。它的作用是把num的二进制补码中的0  和1全部取反(0变为1,1变为0)。有符号整数的符号位在 ~ 运算中同样会取反。

       补码:在二进制表示下,正数和0的补码为其本身,负数的补码是将其对应正数按位取反后加一。

  •   左移和右移(>>,<<):

num << i 表示将  的二进制表示向左移动  位所得的值。

num >> i 表示将  的二进制表示向右移动  位所得的值。

移位运算中如果出现如下情况,则其行为未定义:

  1. 右操作数(即移位数)为负值;
  2. 右操作数大于等于左操作数的位数;

例如,对于 int 类型的变量 a , a<<-1 和 a<<32 都是未定义的。

对于左移操作,需要确保移位后的结果能被原数的类型容纳,否则行为也是未定义的。对一个负数执行左移操作也未定义。

对于右移操作,右侧多余的位将会被舍弃,而左侧较为复杂:对于无符号数,会在左侧补0 ;而对于有符号数,则会用最高位的数(其实就是符号位,非负数为0,负数为0)补齐.

2.2 快速幂:

快速幂,二进制取幂(Binary Exponentiation,也称平方法),是一个在O(logN)的时间内计算a^n的小技巧,而暴力的计算需要O(n)的时间。而这个技巧也常常用在非计算的场景,因为它可以应用在任何具有结合律的运算中。其中显然的是它可以应用于模意义下取幂、矩阵幂等运算,我们接下来会讨论。

2.3 欧几里得算法:

欧几里得算法,也叫辗转相除法。这是数论和代数学中的重要方法。从整数的除法可知:对任给二整数a,b0,必有二整数q及r存在,使得a=qb+r,0≤rb,并且q及r是唯一存在的,这是数论的一条基本定理,整数的一系列重要性质都可以由此得到,如果反复利用这一基本定理,就可以得到因为每进行一次除法,余数就至少减一,而b是有限的正整数,所以最多进行b次,总可以得到一个余数是零的等式,即rn+1=0。上面的方法叫做欧几里德算法。

2.4 素数筛:

  • 方法一:枚举所有小于数,看是否它能整除其他自然数,但实际上只需要枚举根号次。

  • 方法二:埃式筛:做法其实很简单,首先将2到n范围内的整数写下来,其中2是最小的素数。将表中所有的2的倍数划去,表中剩下的最小的数字就是3,他不能被更小的数整除,所以3是素数。再将表中所有的3的倍数划去……以此类推,如果表中剩余的最小的数是m,那么m就是素数。然后将表中所有m的倍数划去,像这样反复操作,就能依次枚举n以内的素数,这样的时间复杂度是O(nloglogn)。
  • 方法三:欧拉筛:欧拉筛法的基本思想 :在埃氏筛法的基础上,让每个合数只被它的最小质因子筛选一次,以达到不重复的目的。其他复杂度(O(n))。

2.5 简单博弈:

  • 首先介绍博弈论问题有如下几个特点

    • 1:博弈模型为两人轮流决策的博弈。并且两人都使用最优策略来取得胜利。
      • 两个玩家,都会采取最优的决策,那么如果存在一个局面为必胜局面,某玩家位于此局面。只要自己无失误,则必胜。那么同样又一个局面为必败局面,某玩家位于此局面。只要对手无失误,则必败。
      • 那也就是说,针对这样的游戏,我们关注点应该在局面上。
    • 2:博弈是有限的。即无论两人如何决策,都会在有限步决出胜负。
    • 3:博弈是公平的。即两人进行决策的规则相同。
  • 相关概念:

    • 先手必胜状态:先手可以从这个状态走到某一个必败状态。
    • 先手必败状态:先手走不到任何一个必败状态。
    • 也就是说先手必胜状态,那么先手一定能采取某些操作,让后手面对必败态。如果是先手必败态,无论先手怎么操作,都无法让后手面对必败态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值