zoukankan      html  css  js  c++  java
  • 模板

    __builtin系列

    据说是GCC自带的系列,在本地装有 GNU GCC Compiler 的 Codeblocks 和 Codeforces 等平台都可以使用这些。但是没办法从 Codeblocks 中找到函数原型。不过基本上区域赛都是会使用 GCC 的吧。

    __builtin_popcount(unsigned int n):返回n的二进制1的个数,输入其他类型会强制转换成 unsigned int 再计算。
    __builtin_parity(unsigned int n):返回n的二进制1的个数的奇偶性,没什么用。
    __builtin_ffs(unsigned int n):返回n的二进制的最后一个1的位置,从右往左数从1开始,返回0表示没有1。貌似都是强转成 unsigned int 了。
    __builtin_ctz(unsigned int n):返回n的末尾0的数量,相当于上一个函数-1,返回32表示全都是0。貌似都是强转成 unsigned int 了。
    __builtin_clz (unsigned int n):返回n的前导0的数量。当全是0的时候好像会出乱码

    所以还是没事别用后面的那几个了。

    其他

    nth_element(a + 1, a + k, a + 1 + n):假如a[1],...a[n]恰好是[1,n]的一个排列,那么调用前面的形式,就会使得a[k]==k成立。换言之就是把前k小放在a[1,k]中。期望复杂度O(n)。算法的大概过程:选择一个pivot,通过快速排序的partition函数把小于pivot的放在左边,把大于pivot的放在右边,复杂度O(n)。这时假如pivot恰好在第k个位置,则直接返回。否则数组被pivot分成了两半,若左半边包含第k个位置,则向左递归;右半边同理。

  • 相关阅读:
    C++学习总结 复习篇2
    C++ 学习总结 复习篇
    Git 安装与使用
    前两周工作总结
    [bzoj1033] [ZJOI2008]杀蚂蚁antbuster
    [bzoj1031] [JSOI2007]字符加密Cipher
    [bzoj1030] [JSOI2007]文本生成器
    [bzoj1029] [JSOI2007]建筑抢修
    [bzoj1028] [JSOI2007]麻将
    [bzoj1026] [SCOI2009]windy数
  • 原文地址:https://www.cnblogs.com/KisekiPurin2019/p/12078925.html
Copyright © 2011-2022 走看看