随笔分类 - 计算几何
摘要:传送门 首先对于斜率相同的直线,只要保留 b 最大的那些 发现最后那些对答案有贡献的线段是下凹的 把直线按斜率从小到大排序,一条条加入,用单调栈维护当前有贡献的直线 如果当前考虑加入的线和倒数第二条线的交点横坐标小于它与最后一条线的横坐标 或者,当前直线的 b 比上一条直线的 b 大 那
阅读全文
摘要:传送门 假装是个计算几何,看到最远距离,考虑二分答案 二分一个答案后每个 boss 就是圆,变成了问是否能够不经过圆从 (1,1) 走到 (n,m),即问 (1,1) 和 (n,m) 是否联通 满满的狼抓兔子既视感 考虑是否联通其实就是问是否有一些圆连在一起把左下到右上断开 所以
阅读全文
摘要:传送门 分块 对每个块维护一个 add 和 del 标记,对于块 o 内某个位置 i,它真实的修改量为 a[i]+add[o]∗i−del[o] 这样就可以维护一个区间加一个等差数列的操作了 对于操作 2,交换两个位置,直接把两个位置的块标记下传,然后直接交换 对于操作 $1
阅读全文
摘要:传送门 良心的动态凸包模板题 各种保证是真的舒服 2333 因为只有删除操作,所以直接倒过来变成插入就行了 上动态凸包,用 set 把凸包的点按 x,y 为一二关键字排序,然后加点的时候找找前驱后继看看要不要删,顺便维护当前凸包长度,没了
阅读全文
摘要:传送门 写出式子,若存在 a∈A,b∈B,使得 b+v=a,那么此方案会产生冲突 即存在 a∈A,b∈B,使得 v=a+(−b),设 C=A+(−B) 那么有 v∈C,+ 表示闵可夫斯基和,− 表示坐标符号取反 所有直接
阅读全文
摘要:传送门 首先容易证明,A+B 的凸包上的点集一定是 A 凸包上的某个点 加上 B 凸包上的某个点 所以先求出 A,B 的两个凸包,然后按极角维护两个指针 la,lb 分别指向 A,B 目前极角最小的点 首先 A,B 最左的点一定在 A+B 的凸包上 然后考虑移动指针
阅读全文
摘要:传送门 弧线不好处理,考虑先求出直线的总长 画个图发现,把直线向内移动 r 以后,所有直线构成了圆心点集的凸包 然后考虑弧线的长度,容易发现弧线的长度总是圆的周长,大概证明就是直线需要经过弧线才能拐弯 因为最后拐回来了,所以绕了一圈,那么弧线的弧度总和就是 2π 然后求所有圆心的凸包加上
阅读全文
摘要:传送门 首先考虑两个圆覆盖的情况,我们可以求出圆心与交点连线 A 的极角 具体就是求出两圆心连线 B 极角加上余弦定理加反余弦求出 A,B 之间夹角 ,然后覆盖了多少就可以得出 但是多个圆覆盖会重复算,所以离线枚举后面的圆,然后把覆盖的区间按极角排序做一遍类似线段覆盖的操作就行了 区间覆
阅读全文
摘要:传送门 好巧妙的题啊... 首先因为 a+b+c=1,所以我们忽略 c,只要确定出 a,b 即可 考虑构建平面直角坐标系,横坐标为 a,纵坐标为 b,那么一种原料或者合金 v1=(a1,b1) 就可以看成平面上的一个向量 而如果某两种原料 v1,v2 可以构成一
阅读全文
摘要:学到后面数学越来越多了,感觉好难啊,开个博客专门记录一下数学相关的东西 因为反正也没人看,所以主要还是给自己看的 一些符号: 数论函数的卷积:∗,h=f∗g 则 h(n)=∑d|nf(d)g(nd) ϵ 叫单位元,对
阅读全文
摘要:传送门 首先有一个显然的贪心,每次操作都要做到底,为了最优不会出现只卖一部分或者只买一部分的操作 所以设 f[i] 表示前 i 天得到的最大价值,那么对于每一个 i,枚举所有 j<i,意思就是第 j 天全部买入,第 i 天全部卖出 显然如果知道 f[j],那么就知道第 $
阅读全文
摘要:传送门 显然考虑 dp,设 f[i] 表示前 i 个牧场都被控制的最小代价 那么枚举所有 j<i ,f[i]=f[j]+val[i][j]+A[i] val[i][j] 表示控制站从 i 一直控制到 j+1 需要的代价 考虑怎么算这个东西,设 $S[i]=\sum _
阅读全文
摘要:传送门 A.The Doors 看懂题目就会写的题 给一个 01 序列,找到最早的位置使得 0 或 1 已经全部出现 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cm
阅读全文
摘要:传送门 自己在纸上画一下,发现最后留下的线段是下凹的,大概是这样: 把所有直线按斜率从小到大排序,一个个加入考虑 用一个单调栈维护当前能看到的线,如果当前考虑加入的线和倒数第二条线的交点横坐标小于它与最后一条线的横坐标 那么把最后一条线弹出,重复此过程直到不满足上述条件后把此线加入栈 (这个画个图就
阅读全文