Loading

2023.1.12

SP20644.ZQUERY - Zero Query

如果 \([l,r]\) 区间和为 \(0\) ,那么可以转化为 \(s_{l-1}=s_r\)\(s\) 为前缀和数组,考虑添加操作非常的容易,但是删除操作不太容易,使用只加不减回滚莫队 。

P5906 【模板】回滚莫队&不删除莫队

回滚莫队模板题,对于每个数维护最前和最后的位置,只加不减回滚即可。

P4196 [CQOI2006]凸多边形 /【模板】半平面交

将每个多边形,按照逆时针的顺序,拆分成若干个向量,所有多边形的面积交也就是这些向量的的左半平面交。

我们对于所有向量进行极角排序,然后按照极角序用单调队列来维护,每次加入一个向量的时候,看一下前两个向量的交点是不是在新向量的右侧,如果是的话将其弹出。然后还要考虑队首的两个向量的交点是否在新向量的右侧,如果是的话将其弹出。

最后还要特殊判断一下队尾的两个向量交点是否在队首向量右侧,如果是的话就将队尾弹出。

判断点在向量的哪一侧

维护直线方向向量 \(v\) 还有上面的一点 \(P\) ,我们现在要判断点 \(Q\) 在直线的哪一侧,我们求 \(\overrightarrow{PQ} \times v\) ,如果这个叉积值为正,则 \(Q\) 在右侧,否则在左侧。

求两向量交点

对于平面内有四个点 \(A1,A2,B1,B2\)\(\vec{a}=A2-A1,\vec{b}=B2-B1,\vec{c}=B1-A1\)

那么两平行四边形面积比为 \(k=\frac{b \times c}{b \times a}\)

则交点 \(P=A1+k\vec{a}\)

SP4191.MSKYCODE - Sky Code

答案是 \({n \choose 4}\) 减去不合法的方案数,我们考虑每一个数作为公约数的次数,设 \(c_x\)\(x\) 的倍数出现的次数,所以 \(x\) 的贡献为 \(\mu(x){x \choose 4}\)

SP287.NETADMIN - Smart Network Administrator

题目一眼二分答案,考虑如何进行检查,用网络流,每条边的容量设为 \(x\) ,即当前二分的值,看最大流是否流满即可。

P3964 [TJOI2013]松鼠聚会

切比雪夫距离转化成曼哈顿距离,然后枚举以每个松鼠作为家的答案即可。

注意这题横纵坐标互相独立,所以可以拆开来考虑,免去了树状数组。

曼哈顿距离转切比雪夫距离

\[(x,y) \rightarrow (x+y,x-y) \]

切比雪夫距离转曼哈顿距离

\[(x,y) \rightarrow \left( \frac{x+y}{2},\frac{x-y}{2} \right) \]

  • 曼哈顿坐标系本质上就是切比雪夫坐标系旋转 \(45^{\circ}\) 再缩小一半得到的。

P5098 [USACO04OPEN]Cave Cows 3

记录两种方法

直接维护

不妨设 \(x_1\geq x_2\),那么根据 \(y\) 分类讨论

  • \(y_1<y_2\) ,原式 \(=x_1-x_2+y_2-y_1=(x_1-y_1)-(x_2-y_2)\)

  • \(y_1\geq y_2\) ,原式 \(=x_1-x_2+y_1-y_2=(x_1+y_1)-(y_1+y_2)\)

因此直接维护出 \(x_i+y_i,x_i-y_i\) 的最大最小值即可。

曼哈顿距离转切比雪夫距离求解

将原坐标变成 \((x+y,x-y)\) ,问题转化成了求解任意两点之间最大的切比雪夫距离 ,那么直接维护一下 \(x,y\) 的最大最小值即可。

posted @ 2023-01-12 10:56  _YangZJ  阅读(41)  评论(0)    收藏  举报