把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

【学习笔记】 $learn \ from \ failure \ ? ( 雾$

\(1.\)变量名不要用 \(next\) ,在某些编译器里可能是关键词,可以用 \(nxt\) 代替
\(\\\)
\(2.\)在判断某些条件时应该写成

flag = 条件 ? 1 : flag;

而不是

flag = 条件 ? 1 : 0;

\(\\\)
\(3.\) \(c++\) 自带的 log2 函数貌似会很慢,可以先预处理

for(int i = 1; i <= n; ++ i) log_2[i] = (i & (i - 1)) ? log_2[i - 1] : log_2[i - 1] + 1;

\(\\\)
\(4.\)位运算尽量带括号,(因为太菜了,运算优先级搞不清

\(\\\)
\(5.\)要是要用到 \(long \ long\) 乘法加法尽量把所有变量都设为 \(long \ long\),保不齐哪里就是几个 \(int\) 相乘又忘记强制改类型了就 \(GG\)

\(\\\)
\(6.\)快速乘(在这之前我居然一直写的是 \(O(\log n)\) 的龟速乘哈哈哈哈哈哈哈哈哈哈)

inline ll mul(ll x, ll y, ll p)
{
	ll res = (ld) x / p * y + 0.5; 
	res = (ull) x * y - (ull)res * p; 
	return res < 0 ? res + p : res; 
}

\(\\\)
\(7.\)输出注意是否换行,是否空格

\(\\\)
\(8.\) 清空数组少用 \(memset\) ,可以直接循环需要清空的范围

\(\\\)
\(9.\)在处理很多数据的时候一定要想想相等的情况,或者重边之类的

\(\\\)
\(10.\)数组下标不要从函数传到函数

\(\\\)
\(11.\) 遍历字符串的时候用一个变量提前存字符串长度,否则是 \(O(n^2)\)

\(eg:\)

F(i, 0, strlen(s) - 1) //O(n^2)

int len = strlen(s);
F(i, 0, len - 1) //O(n)

\(\\\)
\(12.\) 手动o2
#pragma GCC optimize(2)

posted @ 2020-04-18 14:28  Bn_ff  阅读(193)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end