一元二次方程求根

ax2+bx+c=0(a0)ax^2+bx+c=0 (a \neq 0)

x2+bax+ca=0x^2+\frac{b}{a}x+\frac{c}{a}=0

(x+b2a)2+cab24a2=0(x+\frac{b}{2a})^2+\frac{c}{a}-\frac{b^2}{4a^2}=0

(x+b2a)2=b24ac4a2(x+\frac{b}{2a})^2=\frac{b^2-4ac}{4a^2}

x+b2a=±b24ac2ax+\frac{b}{2a}=\frac{\pm \sqrt{b^2-4ac}}{2a}

x=b±b24ac2ax=\frac{-b \pm \sqrt{b^2-4ac}}{2a}

一元二次不等式

ax2+bx+c0(a>0)ax^2+bx+c \le 0 (a>0)

bb24ac2axb+b24ac2a\frac{-b-\sqrt{b^2-4ac}}{2a} \le x \le \frac{-b+\sqrt{b^2-4ac}}{2a}

Δ=b24ac\Delta=b^2-4ac,不等式有解条件为 Δ0\Delta \ge 0

并查集

  • 查找:如果当前节点的父亲是自身,则返回自身,否则查找其父亲。
  • 路径压缩:查找时将该节点的祖先设为查找结果。
  • 合并:将一个并查集的祖先设为另一个并查集的祖先的儿子。
  • 启发式合并:小的并查集合并到大的并查集里面。不建议使用。
int find(int x){
    if(f[x]==x){
        return x;
    }
    return f[x]=find(f[x]);
}
void merge(int x,int y){
    x=find(x);
    y=find(y);
    f[x]=y;
}