NeoRuTayE's blog

Home

About

Archives

🧸

loading..
C++继承学习笔记

【C++学习笔记】关于继承,基类与派生类

一、概念   继承:继承是C++中的一种机制,通过这种机制,我们可以基于已有的旧的数据类型创建出新的数据类型。在C++中,继承分三种:公有继承(public),私有继承(private),保护继承(protected)。不同的继承类型在在访问权限上会有区别。   基类:即被继承的类。   派生类:即由一个已有的类派生过来的新的类。 二、继承 1)公有继承(public)   公有继承指的是基类的公有成员和保护成员保持不变,但派生类无法直接访问私有成员,需要通过基类的公有成员函数或友元函数访问。 2)私有继承(private)   私有继承指的是,在派生类中,基类的公有成员和保护成员都成为了派生类的私有成员,且这个派生类的派生类(子类)无法访问。 3)保护继承(protected)   保护继承是指基类的公有..

Read more
ACMCC++数论求因子个数

UVA294 - Divisors

Divisors   题意是说算一个区间内的因子数最大的数。网上题解大都是用的dfs,但我又不想写dfs······然后看了一下,区间长度最长才1e4,用质因数分解求出区间内每一个数的因子数然后用最朴素的方法找出答案应该也能过吧······事实证明真的可以,而且只用了40ms 2333333。   这里做个笔记,所谓质因数分解求因子数,指的是,对于一个数x,必定存在以下式子: x = (a1^p1)*(a2^p2)*(a3^p3)*(a4^p4)*···*(an^pn)(其中,a1,a2,···,an均为质数)   那么,x的因子个数则为: sum(x) = (1+p1)*(1+p2)*(1+p3)*(1+p4)*···*(1+pn)..

Read more

HDU2669 - Romantic

Romantic   一道拓展欧几里得的题目,因为是ax + by = 1,所以可以直接用求逆元的方法来求出x,再根据y = (1 - ax) / b求得y。题目要求x是非负的,这在求逆元的过程中已得到了解决。

Read more
ACMCC++图论欧拉路与欧拉回路Fleury

欧拉路、欧拉回路与Fleury算法

一、概念解释 欧拉路:给定无孤立结点图G,若存在一条路,经过图中每边一次且仅一次,该条路称为欧拉路。 欧拉路的存在条件:没有孤立结点,同时奇数度数的点只有2个或0个。 欧拉回路:若一个连通图中没有奇数度数的点,则该图中一定存在一条起点与终点重合的欧拉路,称为欧拉回路。   通俗地讲,欧拉路就是一笔画游戏,每条边只能走一次,问怎么画才能把所有边都画出来。欧拉回路就是在此基础上,不仅要把所有边都画出来,还要求起点和终点要是同一个地方。 二、判断欧拉路是否存在   要判断欧拉路是否存在,只需要判断奇数度数的个数即可。一般使用并查集来实现。代码如下: //判断欧拉路是否存在 #include <iostream> #include <cstdio> #include <cstrin..

Read more
ACMCC++Kruskal最小生成树Prim

【求最小生成树】Prim算法&Kruskal算法

一、概念解释 首先解释几个概念: 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点vi与vj都有路径相通,则称该有向图为强连通图。 连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫做连通网。 生成树:一个连通图的生成树是指一个连通子图,它含有图中全部n个顶点,但只有足以构成一棵树的n-1条边。一颗有n个顶点的生成树有且仅有n-1条边,如果生成树中再添加一条边,则必定成环。 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。 (转自勿在浮沙筑高台)   简单来说,最小生成树就是在连通图中找出一颗树,这棵树满足这样的要求:1、可以..

Read more
15678912