Z_L_G
Z_L_G
全部文章
题解
总结(8)
训练赛(3)
归档
标签
去牛客网
登录
/
注册
又活一天?
你怎么可能做和别人相同的事情又同时超过别人呢?
全部文章
/ 题解
(共48篇)
算法入门-平面最近点对(模板)
题意 给定若干个点,求最近的两个点的距离 思路 分治 对于所有点,总可以按照以下三种情况处理: 1.只剩下两个点:直接返回两点距离 2.只剩下三个点:返回三个距离的最小值 3.剩下的点超过三个,从中点分开,不断递归至情况一/情况二 由此,总能不断地把大区间二分成小区间,并算出区间内最...
2025-03-10
0
33
Prac_前缀和和差分_货物种类
题意 n个点,m次输入,每次输入左界,右界,存储的货物编号 求存储的货物种类最多的点 思路 因为一个点可能重复读入同一个货物,所以使用map并做前缀和 开一个map统计每个点存入的货物和次数,全部读入完后,开第二个前缀和map 遍历第一个map中的每一个点,对每一个点,将其中的货物存入前缀和m...
前缀和
差分
2025-03-10
0
17
算法入门-中序遍历
题意 给定一个树的先序遍历和后序遍历,求他的中序遍历,无法确定的时候,认为是左子树 思路 若没有规定左子树,则给定先序和后序是无法确定的,但规定后即可 对于先序遍历,第一个点总是当前的根,第二个点总是当前左子树的根 对于后序遍历,找到由先序确定的左子树的根的位置,由后续的头到该位置为左子树,由...
2025-03-10
0
23
算法入门-表达式计算(bye逆波兰表达式)
题意 对给定的数学表达式,求解其值(包含括号,加减乘除,幂) 思路 通过递归的方式,每次找到最后一个运算的运算符,然后递归处理该运算符的左边和右边,直到当前区间只有数字,然后将两个递归的结果按照符号处理即可 AC代码 #include<bits/stdc++.h> #define...
模拟
栈
2025-03-10
0
18
算法入门-更相减损术(gcd)
题意 求gcd 证明 对于a和b的最大公因子d a=pd,b=qd 则有c=(p-q)d,使得d为b和c的公因子 代码 int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b); }
2025-03-10
0
14
算法入门-二叉树遍历(模板)
前言 通常对于一颗树有四种遍历方式,先序遍历,中序遍历,后序遍历,层序遍历,分别对应着:根左右,左根右,左右根,层(类bfs队列实现) 题意 存一颗树,输出他的前中后层遍历 思路 由题意,给定一个节点的父亲和该节点的左右位置,可以使用一个结构体数组来存储 对于前三种遍历方式,使用递归即可实...
2025-03-10
0
28
算法入门——归并排序
思路 类似于二分的操作,把每一段空间分成两半,直到空间长度等于一(递归实现) 合并过程,则对两个区间分别分配一个pointer,比较两个pointer指向的元素,然后存入数组 对于每一个片段需要的合并,一共有的层次,所以复杂度为 实现代码 #include<bits/stdc++.h>...
2025-03-06
0
24
Prac_前缀和和差分_储物点距离
题意 给定若干点和每个点的权值,查询若干次,每次查询输出将给定区间所有点移动到给定点的代价,代价为权值*距离 思路 肉眼可见的题目数据范围很大,暴力必T就别抱有幻想了 差分的给出了坐标,可以求前缀和得到每个点的真实坐标 让我们算代价,对代价的公式进行推导: 此时,此时我们试图消去...
2025-03-05
1
22
算法入门——最大的半径(bitset)
题意 给定若干个点,选哪三个能使得构成三角形的同时,短边长最大 思路 读入点,把边存入结构体,记录长度和构成边的两个点,按长度排序,遍历边,每次记录每个点连接了哪几个其它点(使用bitset,用01串来记录联的点的个数),直到有一条边两个顶点已经连的点有交集,该边就是最短边 AC代码(注意b...
2025-03-04
0
27
算法入门——起床困难综合征(位运算)
前言 位运算往往涉及到拆位思考,有时候每一位达到最优解汇合到一起就是全区最优解,同时位运算可以缩小量级,把一个很大的数处理成一个不超过64位的01串 题意 选择一个不超过m的数,做k次给定的操作 (opt包含OR,XOR,AND),结果最大可能是多少 思路 对每一位来说无非0,1两种情况...
2025-03-04
0
37
首页
上一页
1
2
3
4
5
下一页
末页