- 2023.10.1:从 S 开始跑 Tarjan,用
low[T]>dfn[S]
判断 T 和 S 是否在同一个点双内
- 2023.10.2:求点双弹栈时一直弹到
st.top()!=u
为止
- 2023.10.2:设 \(f(i,j)\) 为从 \(i\) 开始且蓝量为 \(j\) 时到终点的期望代价,在无限回蓝的关卡当 \(j\) 不为 \(\max\) 时令 \(f(i,j)=+\infty\),
为了进这个关,首先要先回满蓝
- 2023.10.5:\(n\) 个物品,体积范围为 \(V\) 的背包,用贪心然后调整的结论,但是背包值域只开到 \(nV\) 而不是 \(V^2\)
- 2023.10.5:使用
qpow(n,n-2)
,在 \(n=1\) 的时候暴毙
- 2023.10.7:将所有点按 dfn 排序,但是遍历的时候用了两种不同的遍历方式,导致新的遍历顺序与之前求出的 dfn 序不符
- 2023.10.17:\(10^6\) 个
__gnu_pbds::priority_queue<int,__gnu_pbds::thin_heap_tag>
会炸空间,警钟长鸣!
- 2023.10.30:建出来的区间树/笛卡尔树默认它的根是 1,可它并不是(
- 2023.10.31:之前写的错误的 dp 式子判了下溢,但是后来改了式子,却没有更新下溢的判断,导致越界本地还测不出来/cf/cf/cf
- 2023.11.1:若干个正方体的交是一个长方体,但这个长方体中不一定有某个正方体的一个角(为什么会有呢?)
- 2023.11.2:FHQ Treap 在
merge
的时候只 pushdown
了 \(u\) 而没有 pushdown
\(v\)……
- 2023.11.5:跑有负边权费用流的时候采用经典建超源超汇的方法,导致原本图中很小的流量变得很大,遂卒。解决方式:由于图中没有负环,故跑一遍 SPFA 或(对于 DAG)手动求出初始的势能数组
- 2023.11.5:原始对偶最后算贡献的时候用的是
h[T]
而不是 h[S]-h[T]
,然后由于存在超源超汇跑了两遍,第二遍 h[S]!=0
,遂卒
- 2023.11.10:不要忘了有
bitset
!!!卡了约 30min 想优化做法,到最后发现只是少了一个 bitset
- 2023.11.14:判图上一条边是否是 dfs 树的树边使用
fa[v]==u
,但是图有重边……这可拍不出来啊……
- 2023.11.14:
for(int i=1;i<=x;i++) res^=x>>(__builtin_ctz(x)+1);
怎么如今还会犯这种错误啊………………
- 2023.11.16:(回顾)树状数组上二分的时候没判
u+v<=n
导致下一步跳的区间超出 \(n\),遂卒
- 2023.12.15:请注意已经被
erase
的 iterator
是不能被 copy 的,所以 priority_queue<pair<ll,list<int>::iterator>>
这样的东西需要一直保证里面所有的 iterator
都是有效的!
- 2023.12.18:线段树上颜色段均摊,但是线段树上二分的时候不是判断 \(s\) 是否大于当前整个节点的和,而是判断 \(s\) 是否大于左儿子的和,导致一段颜色被分成 log 段之后,每段又递归下去了 log 次…… 拜谢 \(A\color{red}{FewSuns}\)!!!
- 2024.1.4:
if(l/B!=O.l/B) return l/B<O.l/B; else return (r/B<O.r/B)^((l/B)&1);
导致若干询问被吞噬……
- 2024.1.13:同余最短路的扫一遍不是
Rev(i,n-1,0)
!是对每个子环分别扫一遍!这是不一样的!
- 2024.1.22:
ll s[N][N]; inline int Sum(int i,int l,int r) { return s[i][r]-s[i][l-1]; }
- 2024.1.24:开了
pii<int,ll>
,但是!第一维才是权值!第二维才是点的标号!
- 2024.2.10:大年初一把 Top Tree 的二分 Mid 写成了
(L->fi+R->fi)/2
而不是 (L->fi+prev(R)->fi)/2
,喜提访问 end 而不自知
- 2024.2.18:魔改了输出样例答案的方式导致无论如何答案与 .ans 不同。发现自己昨晚就过了这题。警钟长鸣。
- 2024.2.20:按照 \(a_i\) 排序,点 \(i\) 的 dp 值依赖于所有大于\(a_i\) 的那些点的 dp 值,此时记得按照坐标排序!!1
- 2024.2.20:每日点分治忘了写
!ban[v]
。
- 2024.3.11:TopTree,但是没有执行
siz[u]+=siz[v]
。(这个可不能错啊老弟,拍不出来的啊)
- 2024.3.15:\(n\le 2\times 10^5\),数组值域 \(\le 2\times 10^5\),但这并不说明数组值域 \(\le n\) /kx
- 2024.3.15:单点改,维护每种颜色的出现区间,采取删去
a[x]
\(\rightarrow\) 删去 y
\(\rightarrow\) 加入 a[x]
\(\rightarrow\) 加入 y
,但是 a[x]==y
……
- 2024.3.20:\(O(m\log n)\),\(m=10^4,n=10^5\),但是主席树出现了 \(10^7\) 个节点……
- 2024.3.24:\(n\le 10^5,Q\le 3\times 10^5\),一开始没离线询问,后来离线了却没把数组开大
- 2024.3.25:如果是叶子节点则
return
,但是没往线段树里面把自己插进去
- 2024.3.25:线段树上二分,但是
l==r
的时候不返回
- 2024.3.26:动态开点线段树没有在所有地方使用
newnode()
新建节点,导致节点数爆掉还没发现
- 2024.3.29:
col[q[i]]^=col[u]^col[v]
但是 q[i]
中含有 u
导致暴毙
- 2024.4.16:行列式进行各种推导的过程中没乘 -1
- 2024.4.17:点分树的深度不是 \(\lfloor \log n\rfloor\) 的,而是 \(\lceil\log n\rceil\) 的,所以 \(2^{dep_u}\) 要开 2 倍 \(n\) 的空间!
- 2024.4.22:
modify
函数中没写 %mod
(因为累加的时候这里向来不 %mod
)
- 2024.4.22:写分块数组的时候
x/B*B+B-1
炸出 n
的范围导致越界
- 2024.5.5:树上倍增优化建图的时候在最后只对
fa[0][x]
连边而没有对 x
和 y
连边,导致漏连(id[i][x]
表示 \(x\) 往上 \(2^i\) 级祖先的那些点)
- 2024.5.14:调用
O[u]=new Node
的时候写成了 O[u]=new Node()
,导致 Node
的成员没有被正确初始化。(根据 EK 的建议,应该 new
只负责分配内存,初始化由构造函数做)
- 2024.5.14:想在
update()
里面更新儿子的 fa
,但是没更新。
- 2024.5.14:在
update()
里面更新儿子的 fa
,但是没有让自己的 fa
变成 0
,导致出现幽灵父亲。
- 2024.5.14:
rt=merge(cut(1),rt)
,但是 cut(1)
修改了 rt
。(怎么这都没发现?!)
- 2024.5.17:SAM 在第一次
if(!p)
判断时把 fa
赋为 0
而不是 1
。
- 2024.5.17:写 dij 费用流的时候把
cur[u]=edge[u].begin()
写在了 dij()
里面而不是 bfs()
里面
- 2024.5.17:在判断一条边是否为最短路树上的边的时候,使用
dis[v]!=...+dis[u]
而不是 h[v]!=h[u]+cst[e]
,注意此时 h[u]
是已经更新过的!
- 2024.5.21:
template<class T> write(__int128_t x)
,不会被匹配,然后以 char
打印了 x
。
- 2024.5.21:
string("abc").find('d')==true
。
- 2024.5.30:zkw 线段树的 \(2^k\) 要开到 \(\ge n+2\)。
- 2024.6.9:用线段树记录所有有效节点,但是在线段树上二分的时候使用
L[l],R[r]
而不是 L[k],R[k]
来判断边界。
- 2024.6.17:
is_integral<__int128_t>=false
。
- 2024.7.10:zkw 线段树写了
while(n+2<nn) n<<=1;
而不是 while(n<nn+2) n<<=1
。后者是对的。
- 2024.7.11:线段树维护矩乘,但是乘的顺序写反了。
posted @
2023-10-02 08:41
CharlieVinnie
阅读(
134)
评论()
编辑
收藏
举报