摘要:
##题面 给定 \(n\) 条直线,直线的交点的 \(x\) 轴坐标两两不相同,求从左往右排的第 \(k\) 个交点的 \(x\) 轴坐标(精确到小数点后六位)。 ##题解 这题乍一看是道计算几何题,实际上这题和计算几何并没有什么关系。(雾) 考虑一条 \(x = -∞\) 的竖线。很显然,\(n\ 阅读全文
摘要:
博主学习左偏树时阅读的博客 ##前置芝士 了解堆。 ##引言 如果要求你合并两个优先队列,并且合并后的结果仍然符合优先队列的性质,此时怎么做? 显然,此处不能使用普通的堆。那如何完成操作呢?这时候就需要使用一种特殊的堆了:左偏树。 #正文 左偏树的名,乍一听,像是棵向左偏的树。实际上它的确是一棵向左 阅读全文
摘要:
#前置芝士 熟练掌握二叉排序树的操作,了解 \(Treap\) 的左旋和右旋。 #引言 \(Treap\) 巧妙地使用随机数,解决了二叉查找树保持平衡的问题。但随机数的不稳定,导致它在极小概率的情况下不能保持树的平衡。故我们需要一种更加稳定的数据结构(虽然它不是很好写)。 #正文 \(Splay\) 阅读全文
摘要:
##前置芝士 熟练掌握二叉查找(排序)树的插入、删除、求排名、求某一排名的数、求前驱、求后继等操作。 #引言 二叉查找树看似可以在 \(O(logn)\) 中完成任意上述操作。但若该二叉查找树退化为如下形态: 此时,在此图上操作的时间复杂度仍为 \(O(n)\)。 观察可知:二叉查找树的最优形态是平 阅读全文
摘要:
##前置芝士 了解普通并查集及普通并查集的数据压缩。以下为普通的数据压缩并查集写法: const int N = 1e5 + 5; int n, fa[N]; void find (int x) { //寻找祖先 if (fa[x] == x) return x; return fa[x] = fi 阅读全文
摘要:
###单调栈的定义: 元素顺序始终保持单调性(递增、递减)的栈。 (递增单调栈和递减单调栈的区别仅限于单调顺序不同,故以下为了方便讲解,默认提到的单调栈都为严格递增单调栈。) ###维护方法: 压入新元素 \(x\) 时,将 \(x\) 与栈顶元素比较,若 \(x\) 小于等于栈顶元素,则将栈顶元素 阅读全文
摘要:
原题传送门 ###题意 给定一个n条边n个点的连通图,求该图的某一点在该图距离最远的点距离它的距离的最小值。 ###题解 显然,答案是$\frac {原图直径}{2}$。 本体的图有 \(n\) 个点 \(n\) 条边,很显然是基环树。 那么拆掉任意一条环上的边,该图就会变为一颗普通树。 随意选择一 阅读全文
摘要:
原题传送门 比较复杂的一道DP。 设两点(i,j)之间最短路为dis[i][j],则 可转化为: 将该式前后分立,可得: 其中,可以单独求出,后面的部分则需要DP。 设为b(x),枚举i,并计算出从i出发的每个点的dis。 对于每个到达的点k,b(k)可从k相邻的点的b得出。 显然,在枚举过程中可以 阅读全文
摘要:
题意: 解法: 首先给出在本题中连通和连通块的定义: 连通: 两个粒子a,b连通,当且仅当ax≤bx、ay≤by或者bx≤ax、by≤ay。 如图,A,B两粒子是连通的,而C、D不是。 可以看出,本题中连通的定义类似于无向边。 连通块: 一个有n个粒子的粒子集合S被称为连通块,当且仅当该集合内的粒子 阅读全文
摘要:
貌似是第一篇没咕的题解呢 Problem A. 题意 给定一个数x,要求构造两个正整数a,b,使得gcd(a,b)+lcm(a,b)=x。(x<=1e9) 解法 简单构造,a=1,b=x-1即符合题目要求。 代码 #include <bits/stdc++.h> using namespace st 阅读全文