老年人备忘录

来源:互联网 发布:python中split()函数 编辑:程序博客网 时间:2024/04/26 08:06
基本都是源于网络各处 搜刮而来 侵删

- 数据范围与时间复杂度

N<=20 O(2n)
20 < N< =100 O(n3)
100< N<=1000 O(n2)
10000< N<=105 O(nlogn)
105< N<=108 O(n)
N>108 O(logn)


- 手动开栈

   int size = 256 << 20; // 256MB    char *p = (char*)malloc(size) + size;    __asm__("movl %0, %%esp\n" :: "r"(p));

- 血的教训

1.存邻接表线段树什么的把数组开大一点 不然真的死都查不出错qwq
2.绝对值这种东西就是出来坑爹的吧
3.数据结构里的细节很重要 不要只凭手感打题啊!
4.啊刚写完第一条就又因为线段树数组大小wa了QAQ
5.处理环的时候可以直接了当记录l与r移动或添删就都不会那么麻烦


- 位运算相关

1.集合取并(Set union)
A | B
集合取交(Set intersection)
A & B
集合相减(Set subtraction)
A & ~B
集合取反(Set negation)
ALL_BITS ^ A
2.置位(Set bit)
A |= 1 << bit
清位(Clear bit)
A &= ~(1 << bit)
测位(Test bit)
(A & 1 << bit) != 0
(A >> bit & 1) != 0
3.取最后一个非0位(Extracting every last bit)
A & -A
A & ~(A-1)
统计非0位(Counting out the bits)
For (; A; A -= A & -A) ++cnt;
取所有子集(All the subsets)
X = A
4.While (X) X = (X - 1) & A
判断是否有相邻的1
(A & A>>1) == 0
交换两整数
a ^= b, b ^= a, a ^= b

1 0