07 2018 档案
摘要:题意: 给你了n个圆,让你摞起来,问顶层圆心的坐标 (数据保证间隔两层的圆不会挨着) 思路: 按照题意模拟。 假设我们已经知道了一层两个相邻圆的坐标a:(x1,y1)和b:(x2,y2) 很容易求出来边长是2,2,dis(a,b)的三角形的面积 进而求出来底面所对应的高 找到底面中点 讲a->b 向
阅读全文
摘要:思路: 旋转卡壳应用 注意点&边 边&边 点&点 三种情况
阅读全文
摘要:思路: 求个凸包 旋转卡壳一下 就求出来最远点对了 注意共线情况 也就是说 凸包如果有一堆点共线保留端点即可
阅读全文
摘要:思路: 随机增量法 (好吧这数据范围并不用)
阅读全文
摘要:思路: 多边形面积->任选一个点,把多边形拆成三角,叉积一下 三角形重心->(x1+x2+x3)/3,(y1+y2+y3)/3 多边形重心公式题目中有,套一下就好了 计算多边形重心方法: (1)划分多边形为三角形:以多边形的一个顶点V为源点(V可取输入的第一个顶点),作连结V与所有非相邻顶点的线段,
阅读全文
摘要:思路: 二进制枚举一下要删哪些点 求个凸包,算一下贡献
阅读全文
摘要:思路: 求一遍凸包 用三角形面积(叉积求一下)/边长 求出来高,跟半径比一比 坑点:凸包上三点共线
阅读全文
摘要:思路: 快速排斥实验+跨立实验 注意矩形是实心的,即在内部也算相交。
阅读全文
摘要:思路: 首先我们注意到,对一个序列按分割点分开以后分别冒泡其实就相当于对整个序列进行冒泡。每一个元素都会对复杂度贡献1,除非一个元素两边的分割点都出现了。因此我们可以完全忽略快排的递归过程。只需考虑每个元素在经历几趟冒泡排序之后两边的分割点都出现了。 考虑一个分割点,不妨就是在i,i+1之间的这个分
阅读全文
摘要:题意: 维护一个序列,支持两种操作:1.区间[l,r]的权值+x2.询问区间[l,r]的函数和,即∑fib(x)这里的函数即斐波那契函数数据范围:1≤n,q≤105 思路:一般求斐波那契函数的方法可以考虑矩阵乘法,这里也是这样的。我们不用线段树维护权值,我们用线段树维护线段树维护区间矩阵和。有一个矩
阅读全文
摘要://By SiriusRen #include using namespace std; const int N=100005; int a[N],n,m,f[105][105],g[N],tmp=1; struct Node{int l,r,p,k,ans,id;}ask[N]; bool cmp(Node a,Node b){return a.l<b.l;} bool cmp2(Node ...
阅读全文
摘要:题意: 给定一个长度为 N 的序列两种操作1 l r 将[l,r]的数向右循环移位 2 l r 询问[l,r]内有多少个数等于 k其中 N,Q≤105,ai≤N 强制在线 思路: 1. 每块用一个链表维护一下 位移的话由于是链表,操作速度很快然后每个数都不超过 N,所以用一个数组记录一下每块每个数的
阅读全文
摘要:思路: 先随便建出来一棵搜索树(图可能不连通?) 每一条非树边(剩下的边)和树边都可以构成一个环。 我们只看一个非树边和某些树边构成的这些环。 分成三种情况: 1.没有奇环 所有边都可以删 2.有一个奇环 奇环上的边可以删 3.有一堆奇环,一堆偶环 边化到点上 如果是奇环 非树边为(x,y) 在树上
阅读全文

浙公网安备 33010602011771号