注意事项
不定期更新
long long a = 1<<62 , 结果 a = -1 , 正确应为 long long a = 1ll<<62
二分中要考虑答案存不存在的情况 , 不存在的话要特殊处理.
\(updata : 2021.11.8\) 题面
没有考虑到要满足多条件的二分很有可能将答案提前排除.
如果考虑建边的 \(cnt\) 从零开始的话 , \(head\) 数组要提前赋值为 \(-1\) .
在归并排序中 , 不能是
while(a[i]<=a[j]) b[++k] = a[i++];
while(a[i]>a[j]) b[++k] = a[j++];
而是
if(a[i]<=a[j]) b[++k] = a[i++];
else b[++k] = a[j++]
样例 \(:\) 5 6 4 1 2
\(l = 1 , mid = 3 , r = 6\) 时 , 前者会卡死.
\(updata : 2021.12.13\)
学校机试实验考试 .
while(i<=mid || j<=r) //典型错误
应为 while(i<=mid && j<=r)
这里和高精的条件 while(i<=la || j<=lb) 搞混了.
\(updata : 2021.11.22\) \(复习最小生成树 , 可以去看看当日洛谷的记录 , 有三个很经典的错误.\)
永远要记得 find(fa[x]) , 才是 \(x\) 所在的集合代表.
很多时候要用到的子问题 以 \(l\) , \(r\) 为数列的首尾 , \(d\) 为公差 , 在 \([l,r]\) 区间上有多少个数列的数.
① : ans = (r - l) / d + 1;
② : int t = (r - l+1) ;
if(t % d) ans = t/d + 1; else ans = t/d;

浙公网安备 33010602011771号