初始化

memset(a, str, sizeof a) 将a中元素以str的第一个字节来填充a中的元素四个字节,如果str为100则会给a附上很大的数 一般赋0 或 -1 无穷 赋值为 0x3f 赋值为正无穷,每位都是3f,则结果是 0x3f3f3f3f,是一个 的结果 为什么用0x3f 满足以下要求 -值很大,可以当无穷来使用 -值又不会太大,相加仍然是正无穷而不会溢出

这里运用了一些技巧

要挑选组合数,可以利用位运算来简化

将一组数模拟为一串01串,如果是1,就说明该数被挑选,这样恰可以表示出所有可能的情况

再利用位运算 if(i >> j & 1) 可以判断某一位上是否是1

Link to original

一些用法
 
#define x first
#define y second
 
const double eps = 1e-8;
double a, b;
 
等于
abs(a - b) < eps
 
小于等于
a <= b + eps
 
小于
a < b - eps