写在前面的话
ETT是一种动态树,它可以支持link,cut,子树修改,子树信息查询,链信息查询。似乎还可以支持换根(?),但是我不会。
将$(x_1,y_1)$和$(x_2,y_2)$分别作为$ x$轴和$ y$轴(即将坐标轴旋转,使得$x$轴与$(x_1,y_1)$平行,$y$轴与$(x_2,y_2)$平行,也就是将$(x_1,y_1)$,$(x_2,y_2)$作为单位向量),需要求出其他的点在旋转后的坐标系里的坐标。
如何实现?考虑原来的向量$(x,y)$表示的向量实际上是$xi+yj$,也就是单位向量$i$的$x$倍 + 单位向量$j$的$y$倍。因此,可以设这个点变化后的坐标为$(x’,y’)$,则:
解得
定理:三角形的垂心(orthocenter)、重心(centroid)、外心(circumcenter)共线,且重心到垂心的距离等于重心到外心的距离的两倍。过三角形的垂心、重心、外心的直线称为欧拉线(Euler line)。
可以在这里感受一下。
证明:
如果一个卷积长这样:
好像不能够直接用FWT做了呢。但是我们观察,$X\cup Y=S,X\cap Y=\emptyset$等价于:
正确性显然。那么,我们可以枚举集合的大小,然后做或卷积。可以先对所有的进行FWT,然后枚举大小、求和,最后再变换回去。时间复杂度$2^n n^2$,$n$表示元素的数量。