- 博客(81)
- 资源 (2)
- 收藏
- 关注
原创 C++this指针
this指针:C++中每一个对象都有一个this指针访问自己,它也是所有成员的隐含参数一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行任何对类成员的直接访问都被看成this的...
2018-03-31 22:21:40 214
原创 二叉树性质 && 四种遍历方式
二叉树基本概念:每个结点最多有两棵子树,左子树和右子树(有左右之分)性质:二叉树的第n层上最多有2^(n-1)个元素高度为h的二叉树最多有2^h-1个结点设一棵二叉树的叶子节点数为a,度为2的节点树为b,那么有a = b+1满二叉树:对于高度为h的满二叉树,节点树刚好为最大值2^h-1完全二叉树:对于高度为h的完全二叉树,若把第h层的节点全部删除,那么剩下的就是一棵高度为h-1的满二叉树第h层的叶...
2018-03-31 01:17:52 492
原创 浅层复制和深层复制
浅层复制:实现对象间数据元素的一一对应复制深层复制:当被复制的对象数据成员是指针类型时,不是复制该指针成员本身,而是将指针所指对象进行复制对象的浅层复制:class Point{ public: Point(): x(0), y(0) {} Point(int x, int y): x(x), y(y) {} int Getx() { return x; } int Ge...
2018-03-30 14:34:55 1108
原创 void类型指针 && 指针的各种组合
void类型指针:任何指针都可以赋值给void指针void指针赋值给其它类型指针时都必须经过类型转换void转换前不能参与指针运算,除非转换本质:void指针只知道指向变量/对象的起始地址,却不能知道它们占几个字节指向常量的指针:const int *p1 = &a,不能通过p1改变所指的对象,可以改变指针本身的值指针类型的常量:int *const p2 = &a,可以通过p1改...
2018-03-29 22:40:11 450
原创 基于范围的for循环
基于范围的for循环是C++11新特性,可以用它来很方便的遍历整个数组/容器auto自动类型推断:用于从初始化表达式中推断出变量的数据类型,通过auto的自动类型推断,可以大大简化编程工作具体看例子:#include<stdio.h>#include<vector>using namespace std;vector<int> G[15];int a[1...
2018-03-29 18:08:29 463
原创 对象数组
对象数组初始化:数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象可以通过初始化列表赋值,例:Point a[10] = {Point(1,2), Point(3,4)};如果没有为数组元素指定显式初始值,数组元素便会调用默认构造函数数组中每一个对象被删除时系统都要调用一次析构函数例子:#include<stdio.h>#include<iostream>...
2018-03-29 17:40:16 446
原创 #编译预处理
#include包含指令:#include<文件名>:按标准方式搜索,文件位于C++系统目录的include子目录下#include"文件名":首先在当前目录中搜索,若没有再按标准方式搜索#define宏定义指令:→和const很像,但很多时候都被const取代,带参数的宏定义也可以用inline函数取代,所以基本不用#define 标识符 被标识符代表的字符串:其实就是一种替换,例如...
2018-03-29 01:17:03 408
原创 const数据保护
const常量:限定一个变量不允许被改变,产生静态作用使用const在一定程度上可以提高程序的安全性和可靠性对于既需要共享、又需要防止改变的数据应该声明为常类型(用const进行修饰)对于不改变对象状态的成员函数应该声明为常函数。const常量类型:常对象:必须进行初始化,不能被更新,通过常对象只能调用它的常成员函数(const 类型 对象名)常数据成员常成员函数:函数内部不能对任何函数以外定义的...
2018-03-28 19:26:45 482
原创 友元函数与友元类
类的友元:友元是C++提供的一种破坏数据封装和数据隐藏的机制通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元对于友元类,若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员类的友元关系是单向的具体看例子:#include<iostream>#include<...
2018-03-28 17:44:10 287
原创 类的静态成员
static int 和 int (静态与非静态)的区别:生存期不同,普通变量在离开他的作用域后,存储空间释放,对象消亡用static修饰的变量,生存期为整个程序,即离开它的作用域后,它仍然存在静态变量的初始化只有在第一次使用时才会生效类的静态变量成员:用关键字static声明,要在类外定义和初始化,用(::)来指明所属的类,例如int Point::sum = 0(Point是类名)被该类的所有...
2018-03-28 16:58:37 321
原创 标识符的作用域与可见性
作用域是一个标识符在程序正文中有效的区域。作用域分类:函数原型作用域局部作用域(块作用域)类作用域文件作用域(作用域到文件尾结束)命名空间作用域(暂略)作用域的可见性:可见性是从对标识符的引用的角度来谈的概念可见性表示从内层作用域向外层作用域“看”时能看见什么如果标识在某处可见,就可以在该处引用此标识符如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见对于两个嵌套的作...
2018-03-27 16:10:36 1251
原创 UML类图(类关系的表示)
UML的三个基本部分:事物(Things)关系(Relationships)图(Diagrams)类图:例如下面钟表类的表示对象图:UML的几种关系:①依赖关系:(虚线箭头)类A是源,类B是目标,表示类A使用了类B②关联关系:(实线)图中的重数A决定了类B的每个对象与类A的多少个对象发生作用,重数B同理③包含关系→共享聚集(空心菱形)共享聚集:部分可以参加多个整体,例如一个老师在某个学校任职,如果...
2018-03-27 14:30:34 814
原创 C++结构体,联合体与枚举类
结构体:C++的结构体可以理解为C语言结构体的升级版,也可以理解为特殊的类,很少用,目的是和C语言保持兼容与类的唯一区别是:类中的成员如果定义在类体的最开头,既没有访问属性(缺省访问),则默认是私有的,而结构体相反默认是公有的联合体:union 联合体名称{ 公有成员 protected: 保护型成员 private: 私有成员}特点:①和C语言中的联合一样,成员共用同一组内存单...
2018-03-27 01:45:53 460
原创 类的组合
类的组合(类的成员是另一个类的对象):原则:不仅要负责对本类中的基本类型成员数据初始化,也要对对象成员初始化。例子如下:(代码中有注释)#include<iostream>#include<cmath>using namespace std;class Point{ public: Point(int a = 0, int b = 0) { x = ...
2018-03-26 19:20:36 388
原创 复制构造函数与析构函数
复制构造函数:复制构造函数是一种特殊的构造函数,其形参为本类的对象引用,作用是用一个已存在的对象去初始化同类型的新对象如果没有为类声明拷贝初始化构造函数,则编译器自己生成一个隐含的复制构造函数,这个构造函数会用作为初始值的对象的每个数据成员的值,初始化将要建立的对象的对应数据成员,在很多情况下已经很完美了,所以不用自己声明复制构造函数析构函数:相当于是“反·构造函数”,完成对象被删除前的一些清理工...
2018-03-26 17:09:04 415 1
原创 构造函数基本概念
构造函数:作用:在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态要求:函数名=类型名,不能定义返回值类型,也不能有return语句使用:Clock c(实参1, 实参2,……);如果没有定义构造函数,编译器将在需要时自动生成一个默认构造函数,这个默认构造函数参数列表为空,且初始值可能不确定如果定义了构造函数,编译器就不再隐含生成默认构造函数,如果此时依然希望编译器隐含生成默认构...
2018-03-26 14:50:13 1266
原创 VK Cup 2018 Round 2: D. Contact ATC(思维+树状数组)
E. Contact ATCtime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputArkady the air traffic controller is now working with n planes in the air. All pl...
2018-03-25 17:21:19 2108
原创 VK Cup 2018 Round 2: C. Riverside Curio(思维)
D. Riverside Curiotime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputArkady decides to observe a river for n consecutive days. The river's water l...
2018-03-25 16:49:59 1099 2
原创 VK Cup 2018 Round 2: B. Three-level Laser(二分)
C. Three-level Lasertime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputAn atom of element X can exist in n distinct states with energies E1 < E...
2018-03-25 16:37:57 689 4
原创 VK Cup 2018 Round 2: A. Mystical Mosaic(思维)
B. Mystical Mosaictime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputThere is a rectangular grid of n rows of m initially-white cells each.Arkady ...
2018-03-25 16:28:10 828
原创 Windows系统更新后,VS2012不能使用的问题
打开解决问题后会弹出下面这个框框解决方法:下载 Microsoft Visual Studio 2012 更新 (KB2781514) 即可
2018-03-25 15:45:21 1738
原创 函数重载
函数重载:C++允许函数在相同的作用域内以相同函数名声明,不过必须满足以下条件:要不形参类型不同,要不形参个数不同,必须满足其一例如你想计算一个数字的平方,当这个数字是整型时返回整型,当这个数字是浮点数时返回浮点数,那么就可以定义两个相同名字的函数:int Square(int x) 和 double Square(double x)这样调用函数Square()时,编译程序将根据实参和形参的类型及...
2018-03-24 17:49:18 221
原创 带默认参数值的函数 && 内联函数
内联函数:如果在声明函数时使用关键字inline,编译时会在调用处直接用函数体进行替换,而不是调用函数既然是直接替换,那么里面肯定不能有循环语句,switch语句等注:①内联函数可以避免函数调用,节省参数传递、控制转移等开销②一般编译器自带优化,对于充分简单的函数,编译器可以自动把函数编译成inline的带默认参数值的函数:可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置...
2018-03-24 17:09:24 534
原创 如何使用VS2012进行简单程序的DEBUG(入门级)
前言想必不少人在刷ACM题目或者平时写一些小程序时,多多少少都会遇到一些Bug咦?为什么我的程序RE了……我思路绝对没问题,可这不是我想要的输出结果……等等其中Bug是缺陷(defect)的一种表现形式,而一个缺陷是可以引起多种Bug的,通常debug是指发现缺陷并改正的过程,如果代码中存在缺陷,我们首先要识别造成缺陷的根本原因(root cause),这个过程就称作调试(debugging)然后...
2018-03-22 15:45:51 7854
原创 运算优先级、类型转换
运算符优先级:混合运算时数据类型的转换:一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致,在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据混合运算时数据类型的转换——显式转换:显式类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型语法形式:①类型说明...
2018-03-21 18:47:55 499
原创 bzoj 3477: [Usaco2014 Mar]Sabotage(二分)
3477: [Usaco2014 Mar]SabotageTime Limit: 10 Sec Memory Limit: 128 MBSubmit: 264 Solved: 149[Submit][Status][Discuss]DescriptionFarmer John's arch-nemesis, Farmer Paul, has decided to sabotage Farmer...
2018-03-20 19:33:23 499
原创 bzoj 3355: [Usaco2004 Jan]有序奶牛(拓扑排序+bitset)
3355: [Usaco2004 Jan]有序奶牛Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 56 Solved: 29[Submit][Status][Discuss]Description 约翰的N(1≤N≤1500)头牛排成一行挤奶时,有确定的顺序.牛被编成连续的号码1..N,他拥有L条关于奶牛顺序的信息,所有的信息都写成“A在B的...
2018-03-20 01:12:24 487
原创 bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)
3356: [Usaco2004 Jan]禁闭围栏Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 45 Solved: 26[Submit][Status][Discuss]Description 贝茜又做犯事了,约翰打算关她禁闭.他的农场建有N(1≤N≤250000)个矩形篱笆.围栏不重叠也互不接触,但足一个围栏可能包含一个或几个其他的围栏...
2018-03-19 20:15:18 598
原创 bzoj 3357: [Usaco2004]等差数列(DP+map)
3357: [Usaco2004]等差数列Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 485 Solved: 226[Submit][Status][Discuss]Description 约翰发现奶牛经常排成等差数列的号码.他看到五头牛排成这样的序号:“1,4,3,5,7”很容易看出“1,3,5,7”是等差数列. 给出N(1≤N≤...
2018-03-19 17:37:21 342
原创 八种常用排序算法参考
写在前面:因为网络上有很多篇讲排序算法的,所以这里就不详细讲了,只作为参考和自己查阅当然了,虽然篇幅也会短很多,但部分重点和要点还在八种排序算法分别是:①选择排序; ②冒泡排序; ③插入排序; ④快速排序;⑤归并排序; ⑥计数排序; ⑦希尔排序; ⑧堆排序;(蓝色为不稳定排序)一,选择排序:特点:应该是90%的人学C语言,所会的第一个排序步骤:每次选择后n-i个数字中最小的和当前第i位交换复杂度Θ...
2018-03-19 01:21:31 3867
原创 bzoj 3359: [Usaco2004 Jan]矩形(DP)
3359: [Usaco2004 Jan]矩形Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 74 Solved: 37[Submit][Status][Discuss]Description 给出N个矩形(1≤N≤100)和它的长和宽(不超过1000),写一个程序找出最大的K,使得有K个矩形满足层层包含的关系,即里层的矩形被所有外层的矩形包...
2018-03-18 21:16:49 355
原创 bzoj 3360: [Usaco2004 Jan]算二十四(暴力+表达式求值)
3360: [Usaco2004 Jan]算二十四Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 59 Solved: 48[Submit][Status][Discuss]Description 写一个程序,给出D(2≤D≤10)个数字,按原顺序在数字间加+,一,×算出24,且不使用括号.优先级按正常的优先级处理,即先做乘法后做加减法.输出...
2018-03-18 21:04:20 488
原创 bzoj 3361: [Usaco2004 Jan]培根距离
3361: [Usaco2004 Jan]培根距离Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 88 Solved: 70[Submit][Status][Discuss]Description 贝茜和其他奶牛联系是通过一连串的中间奶牛传递的,所以当第一头牛和贝茜联系,第二头牛和第一头牛联系,第三头牛和第二头牛联系,…一贝茜就能依次联系到其...
2018-03-18 19:52:16 280
原创 bzoj 3367: [Usaco2004 Feb]The Big Game 球赛(DP)
3367: [Usaco2004 Feb]The Big Game 球赛Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 56 Solved: 45[Submit][Status][Discuss]Description 快到奶牛冠军杯足球赛了,今年在J队与H队之间将会出现十分激烈的对抗. 作为今年牛奶生产创记录的奖励,约翰同意他的奶牛们...
2018-03-18 19:29:18 329
原创 bzoj 3369: [Usaco2004 Feb]Pesky Parentheses 烦人括号(思维题)
3369: [Usaco2004 Feb]Pesky Parentheses 烦人括号Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 14 Solved: 7[Submit][Status][Discuss]Description 奶牛们只学过加和减.她们写下了含有N(1≤N≤10)项的表达式,比如: 1+4 -2-1+10 -6贝茜认...
2018-03-18 19:01:14 263
原创 bzoj 3372: [Usaco2004 Feb]Moo University -- Financial Aid 财政补助(set+贪心)
3372: [Usaco2004 Feb]Moo University -- Financial Aid 财政补助Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 30 Solved: 22[Submit][Status][Discuss]Description 贝茜统计到人类拥有很多大学可以去就读,而奶牛们却一个大学也没有.为了解决这个问题,...
2018-03-18 16:59:09 657
原创 bzoj 3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜
3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 152 Solved: 65[Submit][Status][Discuss]Description兽群中总是有一些麻烦制造者.约翰知道他的N(1≤N≤100)头奶牛中有一头总是说谎,其他的总是说真话.他想快速的找出这...
2018-03-18 00:49:34 376
原创 bzoj 3374: [Usaco2004 Mar]Special Serial Numbers 特殊编号
3374: [Usaco2004 Mar]Special Serial Numbers 特殊编号Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 20 Solved: 11[Submit][Status][Discuss]Description 在约翰的农场上每个新出生的奶牛都有一个N(1≤N≤100)位的数字,这些数字是连续的,这个数字大于任...
2018-03-17 23:34:05 353
原创 bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛(二分)
3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 28 Solved: 21[Submit][Status][Discuss]Description 约翰有N(1≤N≤100000)头奶牛,它们都可以控制自己的产奶量.一头产奶不多的奶牛会被其它奶牛嘲笑, 约翰制订一...
2018-03-17 16:34:41 318
原创 无根树的同构:Hash最小表示法(bzoj 4337: BJOI2015 树的同构)
这里的同构是指:对于两棵树A, B,如果能通过重新标号使得两棵树完全相同,则称树A和B同构Hash最小表示法步骤:①暴力每个节点为根②对于当前根x,对树进行DFS③DFS时对每个节点维护一个字典序最小的括号序列④对于两棵树A和B,如果存在x和y满足:A以x为根,B以y为根,x和y节点的括号序列完全一样,那么A和B同构复杂度O(n³)关于优化:完全不用暴力所有节点为根,只需要暴力树的重心就好了,因为...
2018-03-17 15:50:14 950
OpenGL基础学习完整代码(完整场景带优化).zip
2020-09-28
OpenGL基础学习完整代码.zip
2020-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人