------------恢复内容开始------------
位运算 按位 与&同1为1 |或同0为0 异或 按位取反^ 不同为1 l+r>>1 =(l+r) /2 位运算的速度极快 ~位取反 while(~scanf("%d",a)) 一直读直到没有
位运算实现交换 swap
void swap(int a,int b) a=a+b;b=a-b;a=a-b;
a=a^b;b=a^b;a=a^b;
<<1左移相当于乘2 左移多少位相当于乘2的多少 次方 MAX=1<<32-1 常用来定义无穷或最大 (1<<4)-1 == 1111
>>1 除以2
recursion(递归)大化小 f(n)=g(n,f(n-1)) f(0) 递归出口 递归 函数调用栈stack 深度优先搜索DFS回溯 1初始状态2目标状态3穷举范围4约束条件5状态恢复(回溯)
非递归函数的内联(inline) 常数优化
搜索模板的套路:先判断是否到达目标状态 //终止条件 递归的出口
如果达到 状态是否符合条件是否合法是否可以计入本轮答案
如果没有达到 枚举可能的状态 记录本轮选择 并且进入下一层
返回后 消除影响(把假设的作为消除掉)
------------恢复内容结束------------