acm小知识

 __builtin_popcount(i);
__builtin_popcountll(i) ;
//计算i的二进制表示中1的个数

int a[M] , b[M] ; memcpy(a+i , b+j , sizeof(int)*s) ; //把b数组中[j , j+s-1]这段复制到a数组中[i , i+s-1]; copy(a , a+5 , b) ;//把a[0~5]复制到 b里


//http://blog.chinaunix.net/uid-26284412-id-3189214.html
这里讲了关于sscanf读川的高级操作,比如说怎么读“1234/abcd",这个串中从‘/'后开始的字符串
char str[]="1234/1bcd" , buf[100] ;
sscanf (str , "%[^/]/%s" , buf) ;

 2016.7.27,最近再见cdq分治,看到了一个复杂度计算公式T(n) = 2*T(n/2) + O(n) , T(n) = O(knlogn) , 表示一脸懵逼。。。http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html

 

 

实现log2(x)函数:

1 inline int clz(int x){return __builtin_clz(x);}
2 inline int clz(LL x){return __builtin_clzll(x);}
3 inline int ctz(int x){return __builtin_ctz(x);}
4 inline int ctz(LL x){return __builtin_ctzll(x);}
5 inline int lg2(int x){return !x ? -1 : 31 - clz(x);}
6 inline int lg2(LL x){return !x ? -1 : 63 - clz(x);}

 

Lambda 表达式(C++11的新特性):

 

lambda的引入符:
[]        // 不捕获任何外部变量
[=]      // 以值的形式捕获所有外部变量
[&]      // 以引用形式捕获所有外部变量
[x, &y] // x 以传值形式捕获,y 以引用形式捕获
[=, &z]// z 以引用形式捕获,其余变量以传值形式捕获
[&, x]  // x 以值的形式捕获,其余变量以引用形式捕获

 

Kruskal重构树 : 用于处理一些最小生成树的边权最值问题,传送门

 

赋值函数iota:

//对数组之类的进行赋值操作
int a[100];
iota (a, a+5, 5);
// 0~4: 5 6 7 8 9

 

如何O(n)处理1~n每个数关于mod的逆元

const int mod = 1000777;
int inv[1000001];

inv[0] = inv[1] = 1;
for (int i=2; i<=1000000; i++)
    inv[i] = 1ll * (mod - mod/i) * inv[mod%i] % mod;

 

linux上的文件比较命令:http://baike.baidu.com/link?url=HVesJktyK8vggauflKDUod019QnidvZdcDMh5p7zUSjKjx_F9tdf1HCQrrE1xTnvtxIPetwoD_5idWg_dags4DEc2V6pDTSDdvUc8xSKCZSejd2lics8mD6n22WnI6fWn8jpOz497GaDzX2FFdXVYd5HECbg12RlY6L4U_LO-G3

 

Google搜索技巧: related: xxxxxx

这可以搜出一些和xxxxx相关的网站

posted @ 2016-07-13 08:34  92度的苍蓝  阅读(616)  评论(0)    收藏  举报
http://images.cnblogs.com/cnblogs_com/Running-Time/724426/o_b74124f376fc157f352acc88.jpg