摘要: 题目的所求可以转化为: $y^2=r^2 x^2$(其中r,x,y均为整数) 即$y^2=(r x)(r+x)$(其中$r,x,y$均为整数) 不妨设$(r x)=d u$ ① $(r+x)=d v$ ②(其中$gcd(u,v)=1$) 则有$y^2=d^2 u v$,因为$u,v$互质所以$u,v 阅读全文
posted @ 2019-01-19 22:44 呢没理他 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 主席树,一个数据结构,能访问到历史版本的数据,常用于可持久化和区间k大值,是线段树的一个升级版。 可持久化 可持久化的意思是可以访问任意版本的数据,一眼想到的暴力做法就是开n个数组来记录,这显然是不可取的。 那么我们考虑优化。若只有单点修改,不难发现每两个版本的差别最多为1,那么我们是不是可以只更改 阅读全文
posted @ 2019-01-19 22:34 呢没理他 阅读(1234) 评论(0) 推荐(4) 编辑
摘要: 拿到这道题的一般思路就是直接暴力枚举每一对l,r,再拿l与r的每一个数与p比较,这样就可以O(n^3)(不满)的复杂度获得60分 include using namespace std; int n,k,p,ans; struct edge { int c,m; }a[200005]; inline 阅读全文
posted @ 2019-01-19 20:27 呢没理他 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 一、概念 线段树,在各个节点保存一条线段 可以高效解决连续区间的修改查询问题 由于二叉结构的特性 它每次操作能保持每个操作的复杂度为O(logn) 由于是一棵二叉树 每个节点的信息都会被logn个左右的节点记录 所以空间消耗一般较大(一般是4 n) 二、操作 1、预处理 我们先考虑节点个数是2的n次 阅读全文
posted @ 2019-01-19 20:12 呢没理他 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 这里介绍的是高斯 约旦消元法。 相对于传统的高斯消元,约旦消元法的精度更好、代码更简单,没有回带的过程。 约旦消元法大致思路如下: 1.选择一个尚未被选过的未知数作为主元,选择一个包含这个主元的方程。 2.将这个方程主元的系数化为1。 3.通过加减消元,消掉其它方程中的这个未知数。 4.重复以上步骤 阅读全文
posted @ 2019-01-19 20:08 呢没理他 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 状态压缩就是将一行的状态压成一个二进制数,这个数的二进制形式反映了这一行的情况 比如0100111的意义为:这一排的第一个数没被使用,第二个被占用了,第三四个没被占用,第五六七个被占用 我们知道位运算和状压DP一样,也是在二进制下进行的,所以位运算往往可以解决很多问题 我们来看看状压DP(位运算)的 阅读全文
posted @ 2019-01-19 20:07 呢没理他 阅读(650) 评论(1) 推荐(1) 编辑
摘要: upd:$(x1,y1)(x2,y2)$表示以$(x1,y1)$为左上端点 $(x2,y2)$为右下端点的矩形 本来以为是一道二位树状数组的模板,但是看数据范围之后就放弃了,边界既然到了2000000,那么我们只能使用其他办法来代替树状数组 ~~于是,CDQ分治就诞生了!~~ 此题我们可以把问题转化 阅读全文
posted @ 2019-01-19 20:06 呢没理他 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 看到题解大部分都是用‘递归+路径压缩’做的,所以本蒟蒻就来发一篇‘循环+路径压缩版并查集’的题解。速度比递归版本更加优秀~~(其实循环代码还要好写一些)~~。 并查集的操作有三步,初始化查找祖先与合并。 既然并查集是来查找祖先的,那么初始化就必然是让每个点的祖先指向自己 阅读全文
posted @ 2019-01-19 20:05 呢没理他 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 这道题思路真是妙啊QWQ "原题地址" 题目大意:在一个平面内,求出所有的高度大于$0$的点与$(0,0)$的连线没有与之前的线段相交的楼房,带修改 看到带修改,显然会想到数据结构来维护,再看到再平面区间加减和区间查询,显然又会想到线段树。 那线段树的每一个节点要维护什么值呢? 看到题面自然会想到斜 阅读全文
posted @ 2019-01-19 20:04 呢没理他 阅读(267) 评论(0) 推荐(0) 编辑
摘要: "原文地址" 生成树的概念: 在一个无向图中,设顶点数为$n$,取其中$n 1$条边并使所有点相连,所得到的一棵树即为生成树。 最小生成树: 如果还没有接触过生成树的同学,欢迎戳 "最小生成树详解" 次小生成树: 次小生成树顾名思义,就是边权之和次小的一棵生成树。有严格次小生成树与非严格次小生成树之 阅读全文
posted @ 2019-01-19 20:03 呢没理他 阅读(1303) 评论(0) 推荐(5) 编辑
摘要: 我又爆零了…… 阅读全文
posted @ 2019-01-19 20:02 呢没理他 阅读(543) 评论(8) 推荐(1) 编辑
摘要: 发现这道题的题解大多都没有详细讲欧拉函数,所以本弱就来详细将讲欧拉函数 欧拉函数是小于$x$的整数中与$x$互质的数的个数,一般用$φ(x)$表示。特殊的,$φ(1)=1$。 如何计算出$1 n$欧拉函数呢? ~~我会GCD暴力枚举!~~ 复杂度$O(n^2logn)$ ~~我会递推~~ 复杂度$O 阅读全文
posted @ 2019-01-19 20:01 呢没理他 阅读(241) 评论(0) 推荐(0) 编辑
摘要: "洛古题面" 对于操作一,用快速幂算即可 代码如下 对于操作二,用拓展欧几里得算法即可。 已知$a,b,n$,求$x$的最小值,使得$a x≡b(mod p)$,可以转化为:$a x+p y=b$,则要求$gcd(a,n)|b$,否则无解。不定方程的求法可以参照 "这道题" $exgcd$代码如下 阅读全文
posted @ 2019-01-19 19:59 呢没理他 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 这里介绍最小生成树的两种方法:Prim和Kruskal。 各种Bug于2018 9 27日修复 两者区别:Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。Prim是以更新过的节点的连边找最小值,Kruskal是直接将边排序。 两者其实都是运用贪心的思路 洛谷数据: Prim: 个 阅读全文
posted @ 2019-01-19 19:58 呢没理他 阅读(3015) 评论(1) 推荐(15) 编辑
摘要: %你退火,听上去一个十分高级的算法,实际上他只是贪心的一种随机化,他的思想很简单,一般是随机几个数,然后用这几个数来算出答案,并更新答案。 但是,如果只是单纯的随机几个数,那么他的也不会叫做%你退火,所以这个算法也有他自己的奥妙。 %你退火实际上是爬山算法的一种升级版,爬山算法就是要不断的选择更优解 阅读全文
posted @ 2019-01-19 19:54 呢没理他 阅读(309) 评论(0) 推荐(0) 编辑