寒假集训Day5

vector去重

unique(a.begin(),a.end());
返回一段没有重复的数组的末尾
得到去重后的数组:
a.erase(unique(a.begin(),a.end()),a.end());

二分推荐写法

int l = 1,r = 1e9,ans;
while(l <= r) {
  int mid = (l + r) >> 1;
  if(check(mid)) {
    ans = mid;
    l = mid + 1;
  }
  r = mid - 1;
}

快速幂

int qpow(int a,int b) {
  int res = 1;
  while(b > 0) {
    if(b & 1) res = res * a;
    a = a * a;
    b >> = 1;
  }
  return res;
}

lowbit

任何一个十进制整数都可以表示为二进制,lowbit的作用就是
求出一个整数在二进制表示下,从右往左数遇到的第一个1,然后把后面所有的位都补上0之后输出的结果
所以2的k次幂求lowbit之后还是原来的数
int lowbit(int x){return x&(-x);}

posted @ 2024-01-20 15:34  24Kmagic  阅读(10)  评论(0)    收藏  举报