老年人备忘录

基本都是源于网络各处 搜刮而来 侵删

- 数据范围与时间复杂度

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值