NeoRuTayE's blog

Archives · 2019

Home

About

Archives

🧸

ACMCC++图论并查集拓补排序

HDU1811 - Rank of Tetris

Rank of Tetris   根据题单的提示,这是一道拓补排序+并查集的题目,然而我并不会拓补排序......所以这里先写一下拓补排序相关的东西吧......   首先,拓补排序是对一系列有先后顺序的“活动”的排序。何为“有先后顺序的‘活动’”?举个例子,假如现在某人要穿衣服,那他必须要先穿内衣再穿中间的毛衣,最后再穿外套。拓补排序就是使用有向无环图(DAG)来对这些有先后顺序的活动进行排序,得到一个可行的顺序。对于同一系列的活动,可能有多于一种顺序可以使他们满足拓补排序。这跟穿衣服时可以先穿裤子再穿毛衣然后再穿外套,也可以先穿毛衣再穿裤子然后穿外套是一样的。   拓补排序的实现:先找出入度为0的点,然后将这个点以及与这个点相连的边删除,并将与这个点直接相连的点的入度都减一。再找出当前入度为0的点,重..

Read more
loading..
C++继承学习笔记虚函数面向对象

【C++学习笔记】虚函数(虚方法)

介绍 对于一个派生类以及他的基类,若两者都有一个相同名字的方法,但这两个方法的实际行为并不相同,那应将这个方法声明为虚方法(virtual)。原因在于,如果方法是通过引用或指针调用的,在不声明位虚方法的情况下,程序将根据引用类型或指针类型确定使用的是具体哪个方法。而声明为虚方法,程序将根据引用或指针具体所指向的对象的类型来调用方法 e.g.   使用引用来调用方法   首先是不使用虚函数的情况 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cctype> using namespace std; class Human{ ..

Read more
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
12