数据结构与算法
文章平均质量分 86
存放一些算法讲解,以及具体题目思路
寒商
一枚崭新的蒟蒻开始了他的博客生涯
展开
-
并查集原理及C++实现
并查集是什么并查集就如字面上,是一个具有合并(join)与查找(find)功能的集合。它的本质是一个等价类(具有自反性、对称性、传递性的图)。(该段是自反、对称、传递的说明,已学过的可以跳过)通俗地解释下自反、对称以及传递,如果每个人都和自己互为亲人,即“我是我的亲人”,那么可以称这是一种自反的;假如我是你的亲人,那么也可以说你是我的亲人,这样的关系称为对称的,如果只是单方面的,比如我喜欢你,你不喜欢我,这样的就不能称之为对称的;你是我的亲人,他是你的亲人,他也是我的亲人,即"我的亲人的亲人还是我的亲原创 2021-01-20 18:23:02 · 278 阅读 · 0 评论 -
JAVA期末实验:CSP 201809-4 原题
因为防止作业重复,以及我抄我自己的情况出现,所以这里暂时只提供思路,不附代码。卖菜题目链接思路这题没啥难的,注意两端计算方式是(a1+a2)/2(a_1+a_2)/2(a1+a2)/2、(an+an−1)/2(a_n+a_{n-1})/2(an+an−1)/2,而其他部分计算方式位(ai−1+ai+ai+1)/3(a_{i-1}+a_i+a_{i+1})/3(ai−1+ai+ai+1)/3买菜题目链接思路元素选择器题目链接思路再卖菜题目链接思路线.原创 2020-12-09 13:13:32 · 1612 阅读 · 5 评论 -
N位自幂数及打表法优化
题目描述编写函数,输入数字位数n,输出n位数字中所有的“水仙花”数。(所谓的“水仙花数”是指一个n位数其各位数字的立方和等于该数本身,例如153是三位“水仙花数",因为:153=13+53+3。)代码实现#include <stdio.h>#include <stdlib.h>#include <math.h>int isZiMiShu(int num, int n);int main(){ int n = 0, min = 1; printf(原创 2020-12-05 20:48:34 · 1490 阅读 · 0 评论 -
百马百担问题优化:降维思想,循环从百万次到七次
百马百担货物问题讲解这个问题的应该挺多的,这里我在整理一次,方便以后自己快速找到吧题目描述百马百担问题:有 100 匹马,驮 100 担货,大马驮 3 担,中马驮 2 担,两匹小马驮 1 担,问有大、中、小马各多少?这里我们用变量small、mid、big分别代表小、中、大马的数量,本文代码均为C/C++代码方法一:暴力方法(100w次)这题很容易想到的是,写一个三层循环遍历所有small、mid、big的情况,然后去验证答案。代码如下:for(big = 0; big <= 10原创 2020-12-05 17:42:30 · 3498 阅读 · 2 评论 -
数据结构:线段树实现详解
线段树C/C++实现数据类型构造基本操作构造线段树添加结点删除结点查询结点实现原理构造线段树添加结点删除结点查询结点C++代码实现构建线段树添加结点删除结点查询结点Lazy tags优化实例应用本质为 加了左右端点的树形结构数据类型构造struct node{ int l,r; //l左端点 r右端点 int val; //val值域}n[maxn]; //n[i]表示标号为i的树的结点基本操作构造线段树void make(int left,int right, i原创 2020-12-02 13:08:32 · 1534 阅读 · 2 评论