- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 类--多态性
类的三大特性:封装性、继承性、多态性关系:封装性是基础,继承性是关键、多态性是补充多态细分:静态多态(编译时多态):函数重载、运算符重载、模板动态多态(运行时多态):1、函数重载·函数重载的含义:赋予一个函数名多个含义。//这里的函数可以是 普通函数 也可以是 类的成员函数。·注意点:a.C++编译器在处理重载函数的调用时,是根据函数的参数类型和参数个数来区分调用哪一个函数的。b.如果两个函数的参数类型和参数个数完全一样,唯有函数的返回值类型不一样,则它们不能构成重载函数。c.常成
2024-05-30 16:09:42
908
1
原创 类---继承性
class UStudent:public Student{private:string major;};UStudent::UStudent(int number1, string name1, float score1, string major1):Student(number1, name1, major1), major(major1){major = major1; //major会被赋值两次}//虚基类class A{};class B:virtual public
2024-05-30 16:09:08
681
原创 类-封装性(第二篇)
静态成员静态成员分为静态数据成员和静态成员函数。静态数据成员//静态数据成员的含义:即将类的数据成员定义为静态型。1.静态数据成员和一般的数据成员(私有)的区别:·静态数据成员的存储空间为所有对象共享·一般数据成员(私有)的存储空间为不同对象不同存储空间2.静态数据成员提出的意义:1.既实现数据的共享又实现数据的封装,保护了数据。//静态数据成员vs全局变量全局变量的缺点:数据不会被保护。2.解决对象之间数据共享的问题3.静态数据成员的定义方法:类型说明符前加关键字static
2024-05-30 16:07:57
399
原创 类--封装性(第一篇)
第十章 类和对象一.类和对象的定义1.从结构体到类在现实生活中,任何事物都可以称为对象,每一个对象都具有动态属性和静态属性,一般将对象的数值属性称为静态属性,将对象可进行的动作称为动态属性。a. 结构体:描述对象的静态属性b. 类:把对象可进行的操作也加入到对象的描述中,这样的描述称为类。“类” 是对具有相同属性和行为的一个或多个对象的描述。类是面向对象程序设计基础。c. 补充前面知识点:—给结构体成员的赋值(两种方法):对成员一个一个赋值:字符串类:strcpy(a.name,“wan
2024-05-30 16:06:28
816
原创 二分图(Bipartite Graph)
题意:有2的集合,n个人,m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w。方法:染色法——》用两种颜色,对所有顶点逐个染色,且相邻顶点染不同的颜色,如果发现相邻顶点染了同一种颜色(即存在奇环),就认为此图不为二分图。题意:有n个英雄,可以杀若干个怪兽,每个英雄只能杀一次,至多有k个英雄可以有两次杀怪兽的机会,问最多可以杀多少只怪兽。任何无回路的的图均是二分图。题意:有n个女孩,m个男孩,k对男女关系x,y,表示女孩x愿意跟男孩y做partner,求最大组合数。解法:有限制匹配个数的二分图最大匹配。
2024-04-27 13:53:47
1030
原创 AC自动机
多模式匹配:模式串有多个,主串只有一个,要进行多次模式串匹配。AC自动机就可以做到,只要经过一些预处理之后,扫描一遍主串,就可以找出所有模式串。题意:给你M个模式串,问有多少种方案 构造长度为N的 至少包含K个模式串的 串。1.字符串会包含,如有模式串she he,串she包含由模式串she和he。有一点 串包含 的意思在里面,所以可以想到用AC自动机把模式串全部扔进去。为结尾的所有后缀的个数加起来,从而把匹配的模式串加起来。题意:多组样例,每次给出N个字符串,求出N个串的母串。:通过fail指针,把以。
2024-04-27 13:42:18
610
原创 最大公约数 和 最小公倍数
拉梅定理:用辗转相除法计算两个正整数的最大公因子时,所需的除法次数不会超过两个整数较小的那个数的倍数的5倍。感性认知:一个数%x的结果=这个数+y%x的结果,当且仅当x是y的因子。这道题数据比较大(ull),当数据较大时,可以考虑先除后乘。从这道题,我们也可以看出,__gcd()可以求很大的数。有时,也可以直接使用。
2024-04-27 13:35:56
1090
原创 约数(又称因数)
常用与一些于因子有关的计算,如计算 $\sum_{i=1}^{n} \sum_{d|n} d $ 或者。:任何一个大于1的数都可以被分解成有限个质数乘积的形式 $N=\prod_{i=1}如果能知道一个大数(1e18)的质因子分解情况,可以直接。当2及其它质数的指数都取偶数时(即平方数),有。当2的指数取奇数,其他质数的指数取偶数时,有。,搞出这个大数的所有因子,效率更快!的思路是,对于每个数d,它的倍数。随机数据下,约数个数的期望是。,当乘积的每一项都为奇数时,是MOD的倍数时,即。
2024-04-27 13:26:43
995
原创 最短路(Dijkstra, Bellman-Ford, SPFA, Floyd)
每次迭代,取出队头的点v,依次枚举从v出发的边v->u,设边的长度为len,判断Dist[v]+len是否小于Dis[u],若小于则改进Dist[u],将Fa[u]记为v,并且由于S到u的最短距离变小了,有可能u可以改进其它的点,所以若u不在队列中,就将它放入队尾。这样一直迭代下去,直到队列变空,也就是说S到所有结点的距离都确定下来,结束算法。Bellman-Ford:每一次松弛的时候Bellman-Ford都要枚举所有的点,而其实很多点都是不需要被枚举的,所以会有很多的无效枚举,使得算法效率降低。
2024-04-27 12:58:30
2549
原创 图的基础内容
G里,设两个点 a,b,由a有一条路可以走到b,由b又有一条路可以走到a,我们就叫这两个顶点(a,b)强连通。的边集的一个子集,使得这个子集中的任意两条边没有公共顶点且不包含自环。G中,有一个子图,这个子图每2个点都满足强连通,我们就叫这个子图叫做 强连通分量。:一个结点称为割点(或者割顶)当且仅当去掉该节点极其相关的边之后的子图不连通。的点集的一个子集,使得边集中的任意一条边都至少有一个端点在这个子集中。:一条边称为桥(或者割边)当且仅当去掉该边之后的子图不连通。掌握好图的存储方式:链式前向星。
2024-04-27 12:51:09
190
原创 树状数组(Binary Indexed Tree)
应用:1.修改单个数询问区间和。2.整个区间加(即整个区间每个数都修改),然后去查单点的值。——》差分。
2024-04-27 12:48:16
633
原创 线段树(Segment Tree)
线段树线段树是用一种树状结构来存储一个连续区间的信息的数据结构。线段树的几点性质:1.线段树是平衡(左子树和右子树的高度差最大为1)的二叉树,最大深度为log2n(n为线段树所表示区间的长度)2.树中的每一个节点代表对应一个区间(叶子节点是一个点…)3.每个节点(所代表的区间)完全包含它的所有子孙节点4.对于任意两个节点(所代表的区间):要么完全包含,要么互不相交5.在进行区间操作和统计时把区间等价转换成若干个子区间(logn个)的相同操作。关键在于理解好:这棵树的每一个结点代表的是一个区
2024-04-27 12:16:37
591
原创 差分及其应用
在两个vector里查找,看看起点的数量是否匹配终点的数量,就可以判断查询的点是否被覆盖。细节点:起点要用upper_bound()去找,终点要用lower_bound()去找。答:用两个vector,一个存区间起点,一个存区间终点,然后两个vector都排序。积分,并且获得相应的元素编号(可以重复获得元素编号),问没有获得。次查询,每次查询一个时间点是否被禁止通话。种元素编号的情况下可以得到的最大积分。个时间段,这些时间段是禁止通话的。次可选择的操作,每次操作可以使区间。的数组(每个元素为0),有。
2024-04-27 12:03:51
865
原创 一维前缀和+二维前缀和
的数列,求出最大的子数列和。要求输出 最大子数组和、左边界、有边界。(如果有多个子数组的和最大,输出字典序最小的左边界和有边界),可以在遍历右边界的过程中去维护。个给定的矩阵中有多少个矩阵满足。算法思路:对于固定的右边界。所围成的子矩形的前缀和。次询问,每次询问给出。解题思路:2D前缀和。
2024-04-27 11:57:17
920
原创 Codeforces Round #717 (Div. 2) C. Baby Ehab Partitions Again
Codeforces Round #717 (Div. 2) C. Baby Ehab Partitions Again
2022-11-18 15:39:33
188
1
原创 Educational Codeforces Round 137 (Rated for Div. 2) D
Educational Codeforces Round 137 (Rated for Div. 2) D
2022-10-19 15:43:49
182
原创 Educational Codeforces Round 118 (Rated for Div. 2) D
Educational Codeforces Round 118 (Rated for Div. 2) D
2022-10-16 11:45:20
155
原创 Educational Codeforces Round 131 (Rated for Div. 2) D
Educational Codeforces Round 131 (Rated for Div. 2) D
2022-10-12 20:27:08
126
原创 Codeforces Round #823 (Div. 2) BCD 题解
Codeforces Round #823(Div.2)BCD 题解
2022-09-27 19:51:52
803
2
原创 最近刷的一些关于树的题
完全二叉树的层序遍历》》》原题链接题意:输入n和一个长度为n的序列(序列为一棵完全二叉树的后序遍历),输出这棵完全二叉树的层序遍历。解法1:后序遍历最后一个元素是整棵树的根;基于它是一棵完全二叉树,根据左右子树的结点个数之和,可以确定左子树的个数和右子树的个数。解法2:...
2022-02-15 09:41:43
485
原创 字符/字符串&字符数组/字符指针
对’\0’的认识:1.C++语言规定以字符’\0’作为字符串结束的标志。2.’\0’ 的ASCII码为0,称为空字符。字符数组的长度 vs 字符串的长度1.字符数组的长度: 表示字符数组可以存放的元素的个数。如 char s[10]; 表示该字符数组可以存放10个字符,即该字符数组的长度为10。2.字符串的长度:如"China"字符串,长度为5;将字符存储于字符数组中,2种初始化方式法如下:方式一:char c[15] = {'H', 'e', 'l', 'l', 'o'}; //
2021-05-01 09:54:27
3386
2
原创 链表-C++
1.链表的介绍//链表的意义:减少不必要的空间浪费+不占用连续的一片内存空间a.链表的结构:链表结构由若干环节组成,每个环节称为一个结点或节点(C++中链表的环节用结构体变量实现),结点内部空间是连续的,结点与结点间的存储空间不一定需要连续,通过指针建立结点之间的链接,由一个结点找到另一个结点。每一结点的结构eg.typedef struct{ int age; char n[10]; STU *next; //指向下一结点的指针}STU;b.链表的类型:单向链表
2021-02-19 01:00:20
310
2
原创 质数口袋
P5723 【深基4.例13】质数口袋题目描述小 A 有一个质数口袋,里面可以装各个质数。他从 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。口袋的负载量就是口袋里的所有数字之和。但是口袋的承重量有限,不能装得下总和超过 L(1≤L≤10^5)的质数。给出 L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。输入格式一行一个正整数 L。输出格式将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空
2021-02-01 01:01:04
982
原创 数字反转
洛谷P5705【深基2.例7】数字反转题目描述输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,例如 123.4123.4 ,要求把这个数字翻转过来,变成 4.3214.321 并输出。输入格式一行一个浮点数输出格式一行一个浮点数输入输出样例输入#1123.4输出#24.321理解分析:代码实现:#include <iostream>using namespace std;int main(){ char a[5];
2021-02-01 00:59:05
1114
8
原创 金币
P2669 [NOIP2015 普及组] 金币题目描述国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。请计算在前天里,骑士一共获得了多少金币。输入格式一个正整数K,表示发放金币的天数。输出格式一个正整数,即骑士收到的金
2021-02-01 00:55:10
654
原创 计数问题
P1980 [NOIP2013 普及组] 计数问题题目描述试计算在区间 1 到 n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在 1到11中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。输入格式2个整数n,x,之间用一个空格隔开。输出格式1个整数,表示x出现的次数。输入输出样例输入#111 1输出#14原题链接:https://www.luogu.com.cn/problem/P1980理解分析:代码实现:#include &
2021-02-01 00:53:06
248
原创 阶乘之和(高精度加法和乘法)
P1009 [NOIP1998普及组] 阶乘之和题目描述用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。其中“!”表示阶乘,例如:5!=5×4×3×2×1。输入格式一个正整数 n。输出格式一个正整数 S,表示计算结果。输入输出样例输入#13输出#19原题链接:https://www.luogu.com.cn/problem/P1009理解分析:1.做本题时,需要掌握一下高精度加法和高精度乘法的一些知识。还不懂高精度加法的读者可以参见博主之前写过的一片文章A+B P
2021-02-01 00:50:55
1488
原创 高精度算法-A+B Problem
洛谷P1601 A+B Problem(高精)题目描述高精度加法,相当于a+b problem,不用考虑负数.输入格式分两行输入。a, b <= 10^500。输出格式输出只有一行,代表a+b的值。输入输出样例输入#111输出#12输入#210019099输出#210100原题链接 : https://www.luogu.com.cn/problem/P1601理解和分析:1.int : 4字节,32位,范围[-2^31, 2^31-1] , 10^9数量级l
2021-02-01 00:45:07
1021
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人