一些小trick
一些小trick
-
long long的上限为 \(9223372036854775807\) ,然后unsigned long long的格式化符号为scanf("%llu",&x),但是如果用于强制类型转换的话1ull或者1llu都行。另:直接这样做和(unsigned long long)强制转换时间上貌似没有什么差别,其他类型同理。 -
unique的去重原理是将后面不重复的元素覆盖前面重复的元素,代码实现是这样的:iterator My_Unique (iterator first, iterator last) { if (first==last) return last; iterator result = first; while (++first != last) { if(!(*result == *first)) *(++result)=*first; } return ++result; } -
手写
max min要快很多,\(1e8\) 的数据从 \(800+ms\) 变成 \(300+ms\) ,但是如果有递归函数则前往不要用,因为会重复递归,开销十分大。 -
scanf在读入空格或者回车的时候会将其重新放入缓冲区。 -
1e6的数据下手写堆比priority_queue要快一倍,但是开O2之后就持平了…… -
1ull<<64的结果是 \(1\) ……???然后发现……这好像是一种 \(UB(Undefined\ Behavior)\) 行为,听说左移位会先将操作的位数对字长取模。至于 \(UB\) 行为……具体怎么确定怎么实现就看编译器心情了,就好像printf("%d %d\n",++i,++i)一样。
靡不有初,鲜克有终

浙公网安备 33010602011771号