那些网站做的非常好看的,河南创达建设工程管理有限公司网站,云主机由哪些部件组成,专业做公墓 陵园的网站有疑问或错误尽管评论#xff01;#xff01; 下面以C为准。 本文手#xff08;粘#xff09;打#xff08;贴#xff09;于各大博客之间 有问题。。。。。 我也不懂 max、min的优化 我们知道#xff0c;打max、min时#xff0c;要用分支#xff08;if语句#xff09… 有疑问或错误尽管评论 下面以C为准。 本文手粘打贴于各大博客之间 有问题。。。。。 我也不懂 max、min的优化 我们知道打max、min时要用分支if语句。这样会使程序超慢。 有没有其他方法有的。 当x0时 x31-1 11111111111111111111111111111111 当x0时 x31000000000000000000000000000000000 所以我们可以通过作差求出谁大谁小。 int max(int a,int b)
{int m(a-b)31;return a~m|bm;
}
int min(int a,int b)
{int m(a-b)31;return am|b~m;
} 以max举例 当ab时m0所以max(a,b)a~0|b0a-1|b0a 当a b时m-1所以max(a,b)a~-1|b-1a0|b-1b 补上一个abs的优化 int abs(int a)
{int ba31;return (ab)^b;
} 当a0时 b0 abs(a)a^0a 当a0时 b-1 abs(a)(a-1)^-1-a相信大家都懂补码的转换方式 有一点很重要的是不要乱用比如不能硬是将int改为long long注意右移的位数要变 手动编译优化 格式 #define x y 在程序中一切出现x的地方都会变成y。 可以省码量增强可读性。 有种带参数的在名字x后打空格里面写参数用逗号隔开不用标类型 例如#define max(a,b) ((a)(b)?(a):(b)) 但是要记住它的本质它只是单纯的替换。若不加括号也许会出现各种运算顺序的错误。还有不要将长的式子、函数、或–放进去。不然会计算多遍时间也许会炸。 取消宏定义 #undef x 不解释 还有其它的不怎么会用到有兴趣的同学可以上网搜。 补上懒人的文件输入输出 #define I_O(x) freopen(#x.in,r,stdin);freopen(#x.out,w,stdout); cstring中常用的函数 这些函数应该人人都会但还是有好多人不会。 先说一下指针与数组的关系。 若有数组int a[N]; 则a表示a[0]的地址(a[0]) *a即是a[0] aia[i] *(ai)a[i] memset(指针数组名,数值最大127最小128清零0,大小sizeof ……) 用法就是将一数组初始化。 memcpy(指针A,指针B,大小SIZE) 将B出复制SIZE这么多的内存到A处。 排序 sort(指针begin,指针end) 将begin到end-1的元素以operator进行快速排序。 sort(begin,end,cmp) 将begin到end-1的元素以cmp进行快速排序。 有的孩子不知道cmp咋搞。 比如从大到小排序 bool cmp(int a,int b)
{return ab;
} a代表前面的元素b代表后面的元素。表示排序后的序列满足ab 稳定性排序 stable_sort(begin,end); steble_sort(begin,end,cmp); 堆 queue里有一个但我不爱用因为内部一定有许多繁杂的操作比如指针开辟一个存储空间会使程序变慢。 我用algorithm里的堆。 先注意一下比较函数int cmp(int a,int b) a表示后代b表示祖先满足一个这样的顺序。可以理解为大根堆 make_heap(begin,end) 将begin到end-1的元素变成大根堆 make_heap(begin,end,cmp) 将begin到end-1的元素以cmp的顺序变成大根堆 push_heap(begin,end) push_heap(begin,end,cmp) 前面begin到end-2已满足堆的性质将end-1的元素放进堆 pop_heap(begin,end) pop_heap(begin,end,cmp) 将begin的元素弹出移至end-1处。 转载于:https://www.cnblogs.com/_Yrh/p/9240133.html