注意事项

不定期更新


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;
 

posted @ 2021-10-21 20:16  xqy2003  阅读(32)  评论(0)    收藏  举报