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相关的网站

浙公网安备 33010602011771号