自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 算法:堆

堆的介绍堆是一颗完全二叉树,通俗来讲就是除最后一行之外是满的,然后最后一行的节点都在最左边的树。下面就是一颗完全二叉树而堆在完全二叉树的基础上又增加了一条性质子节点总是不大于/小于比父亲节点这样可得出堆顶是最小/大的,堆顶是最小值的堆称为小根堆,堆顶是最大值的称为大根堆。堆的操作堆有两种操作,插入和删除需要了解的性质堆是完全二叉树如果树上的节点按层从左到右编号满足左儿子的编号 = 父亲的编号 * 2 , 可以写成 父亲的编号 >> 1右儿子的编号 = 父亲的编号 * 2

2021-05-03 23:52:00 228

原创 PHP:面向对象

最近学了一点php,被有时候加有时候不加的$搞得有点迷糊。不过终究PHP的语法和C++是比较相类似的,学起来也没有这么困难。现在来总结一下PHP中面向对象这一块,同时与C++的面向对象作一下比较。对象创建对于c++,有两种创建对象的方法。直接创建和使用指针Noob a = Noob();Noob* a = new Noob();而在PHP中 只允许使用指针。$a = new Noob();...

2021-05-02 15:58:31 97

原创 C++ 中的浮点数存储问题

问题今天给别人写了个简单的小程序,本来以为十分钟就能解决战斗,但是有一个地方让我产生了困惑。程序需要让我输出一个保留两位的浮点数ans。但是我的输出是2.59,样例输出的是2.60。我很奇怪,掏出计算器来算,ans的值是2.595,看来是我的程序出了问题。但奇怪的就在于,我的输出方式没有任何错误,而且我输出ans也是2.595,我输出2.595这个数也是2.60。于是乎我打开了调试,当ans被计算出来的时候我立即就想起来了。在double中 数据的存储并不是那么精确,2.595在double中是以

2021-04-29 09:24:28 153

原创 QT:简单的小游戏开发日记

最近在b站上学了下GUI开发 (实在不想看黑框了 ),做出来一个翻金币的小游戏。虽然写完了但是不会打包,一直也没有给别人帮我debug。在我会打包之前现在这里复盘一下程序是怎么写出来的。说实话,Qt的学习确实让我有点了解了程序的运行机制。最简单的就是connect函数只走一遍,不是发一遍信号走一遍。而且不是发信号的时候才走这句话。资源添加开发一个程序不可避免的需要图片和音效。虽然我现在还没加音效 由于我用的visual studio开发,vs自动给我创建了一个.qrc文件,资源全放在这里面。添加

2021-03-30 22:06:25 2297

原创 Qt:对话框

Qt对话框分为两种。一种是模态对话框,即弹出此对话框时,用户不可以操作此程序其他窗口。 另一种是非模态对话框,弹出此对话框时,用户可以操作此程序的其他窗口。定义一个对话框很简单,在这里我们顺便设置好它的父亲QDialog* dig = new QDialog(this);模态对话框一句话dig->exec();似乎是这样可以中断main 函数中a 的消息循环,实现无法操作的效果。非模态对话框最早我们尝试显示按钮控件的时候其实就学会了。当时我们照葫芦画瓢,按照窗口的方式实现了一个按

2021-03-20 22:03:28 134

原创 Qt:信号和槽

信号和槽几乎是Qt中最重要的东西,有了这东西,程序各个组件的交互变得更加简单。信号(signal) 是特殊情况下发生的事件,例如QPushButton中的Clicked()槽(slot) 又叫槽函数 是用来相应信号的函数。 可以与信号连接 又可以直接被调用。槽函数与一般函数不同点是,其可以与信号连接,信号发射时它也会立即被调用。信号与槽这里说自定义信号和槽平时定义类时 有public protect private 三种权限在Qt中多了两种,也就是定义信号和槽的地方signals: 信号定义于

2021-03-18 22:12:36 103

原创 C++:Lambda表达式

在C++ 11 中,Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。为什么可以简化编程工作呢,我们以QT中的connect为例。我们可以用Lambda表达式直接作为参数 而不用再另去定义槽函数,为编程工作提供了方便。构成[ ] ( ) mutable-> return type{ }当看到这东西的时候你是不是一脸懵逼,不要急,我们一点一点来看。函数对象参数写于[ ] 中的参数Lambda表达式 不能访问封闭函数中的局部变量,所以我们通过这个参数让Lambda表达式可以访

2021-03-17 20:45:04 2524

原创 C++:多态

多态分类静态多态 运算符重载 函数重载都属于静态多态 复用函数名动态多态 在虚函数和派生类之间实现运行时多态多态特点静态多态 函数地址早绑定 编译阶段就确定好了函数的入口地址动态多态 函数地址晚绑定 运行阶段才能确定好函数的入口地址为什么要有多态通过以下例子class Animal{ public: void speak() { cout << "动物在说话\n"; } int p;};class Cat : public Animal{ pu

2021-03-02 11:36:33 83

原创 C++:类继承

有时候 一些东西有共性 也有不同的地方 但是我们又不想把共性重写一遍 那么我们就能用到类继承类继承基本语法class 子类 : 继承权限 父类三种继承方式公共继承 保护继承 私有继承公共继承 除了private不可访问 其余成员在子类权限不变保护继承 除了private不可访问 其余成员在子类变成保护权限私有继承 除了private不可访问 其余成员在子类变成私有权限下面我们对三种权限进行测试使用共同的父类class Father{public: int m_a;protect

2021-02-02 22:09:32 114

原创 C++:重载运算符

写在前面运算符重载在学的时候着实把我绕进去了,他的实质是用常规运算符实现特殊数据类型的计算。如int a = 10 , b = 20;int c = a + b;+可以实现a和b的相加class Person{ ……}Person a , b;Person c = a + b;但如果是Person类型 他们还能相加吗显然编译器不知道 所以我们需要用到重载运算符 让编译器按照我们的方式计算重载加号运算符假如我们有一个类class MyInteger{public: M

2021-01-14 13:39:17 187 1

原创 C++:类和对象

——我的梦想是面向对象编程c++面向对象三大性质:封装,继承,多态类和结构体体现了封装的思想c++认为万物都为对象,其有自己的属性和行为封装为什么要封装将属性和行为化为一个整体,并且可以加以控制怎么封装语法:class 类名 {访问权限: 属性/行为};如 创建一个圆类class circle{ //访问权限 //公共权限public: //属性 int r; //圆的半径 //行为 //获取圆的周长 double calculateZC() { return

2021-01-05 22:04:03 275 2

原创 C++:变量的引用

变量的引用 就是给变量起一个别的名字,两个变量的地址是相同的。语法数据类型 &别名 = 原名int a = 10;int &b = a; // a 和 b 都是 10 b = 20; // a 和 b 都是 20注意事项引用必须初始化int &c; //错误int &c = a; //正确初始化后不能再改变int &c = a;c = b; // 这句话就成了赋值操作不要引用函数中的局部变量int &test()

2021-01-04 23:47:21 151

原创 C++:函数的重载

函数重载基本就是同名函数不同功用,可以提高代码的重用性。函数重载的条件在同一作用域下如果不在同一作用域下会调用优先级高的函数函数名相同不相同咋重载。。参数个数 类型 顺序不同就靠这个判断调用哪个函数参数个数不同的重载void func(){ cout << "func 1";}void func(int x){ cout << "func 2";}int main(){ cout << func() <<" " &lt

2021-01-04 23:36:43 62

原创 C++:函数的一些新东西

c++的函数里支持了一些新东西:占位和默认值。默认值c++中函数的形参可以有默认值,在传入值的时候可以不传入这个值void func(int a , int b , int c = 10){}int main(){ func(1 , 2);}需要注意的地方一旦有一个形参有了默认值,他后面的形参都必须有默认值int func(int a , int b = 10 , int c = 20)//正确int func(int a = 10 , int b , int c = 20)

2021-01-04 23:21:52 55

原创 C++:动态内存管理

c语言中我们经常用malloc申请空间。但是malloc由些许麻烦 (比如返回void指针) 。所以在cpp中我们可以使用更简单的new申请空间(当然new和malloc的区别还很多)基本用法类型 变量名 = new 类型 赋值单个数据的申请与释放例如int *a = new int(10);delete a;10 可以直接赋值给a指向的地址删除时直接delete + 该指针即可。多个数据的申请与释放申请没啥可说的,照葫芦画瓢int *p = new int[4]{1 , 3 ,

2021-01-04 22:56:16 50

原创 C++:内存四区

c语言中,内存分为四个区域,代码区,全局区,栈区,堆区。代码区我们写的代码会被编译成机器语言存放在这个区域内。全局区一般存放的是两种类型的变量:全局变量,静态变量,常量。特点是由系统分配空间,直到程序结束才释放。定义在函数体外面的变量是全局变量int func(){}int a = 0; // 这是一个全局变量int main(){}static int a; \\ 这是一个静态变量const int a = 3; //常量"hello world" // 常量栈

2021-01-04 22:44:48 63

原创 c语言文件操作

sadasdas

2020-12-22 14:52:19 118

原创 菜鸡的Python学习笔记(持续更新)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-12-17 20:58:18 2009 1

原创 各种指针

*号定义时*号在定义时并不是取值的意思int* p对于初学者来说较难为理解。尤其是“ * ”符号。我们用定义整形变量类比int p = a; //定义一个整型变量,类型为int,里面存放的是a的值cout << p; //输出a的值int* p = &a; //定义一个整型指针变量,类型为int* ,里面存放的是a的地址,定义时,*其实是和int放一块cout << p; // 输出a的地址取值时*号如果不在定义变量时使用就是取值符,取出一个地址中的

2020-12-10 15:54:05 122

原创 对指针使用const

const 是可以声明常量的,声明之后不能被修改。对于一个指针和一个数组,我们有三种const 的形式即const 指针的指向 这个指针不能指向别处指向const的指针 不能通过这个指针修改指向的值const 变量 这个地址的值不能被修改假设有一个数组aa[] = {1 , 2 , 3 , 4} 与一个指针pconst指针的指向int * const p = a;定义了一个指针变量,这个指针变量不能指向别处即p = p + 1;这样的操作是不合法的指向const的指针cons

2020-12-04 14:17:46 164

原创 六种常用的排序算法

桶排序桶排序在需要排序的数字比较小的的时候非常好用的算法,它的时间复杂度达到了Θ(n)\Theta(n)Θ(n)基本思路就是把每一个数字放到一个以他为下标的数组中,然后输出时如果一个桶中有数就输出,输出的次数就是桶里放的数的个数。...

2020-12-04 00:15:19 282

原创 快速读入与超long long的数的读入

快速读入在算法竞赛中我们时常需要读入大量的数据而getchar的读入要比scanf快所以快速读入出现了快速读入是将每个数以字符串的形势一位一位读入,再转化为数字的算法如数字481.先读入‘4’,数字字符的ascii码与数字相差48 即’4‘ - 48 = 4 或者 ’4‘ - ’0‘ = 4(‘0’的ascii为48)此时x为42.再读入‘8’ x = x * 10 + ‘8’ - 48 得到483.return x * ff是如果判断到有负号变为-1使返回的数为负数int read()

2020-12-03 12:39:50 503

原创 快速幂的两种方法

快速幂是一种可以在Θ(log⁡n)\Theta(\log n)Θ(logn)的时间内求出aaa的nnn次幂的算法朴素算法对于求数的幂,朴素算法是循环nnn次,每一次都乘上aaa。这样的话我们计算了nnn次乘法,时间复杂度是Θ(n)\Theta(n)Θ(n)对于非常大的数,这样的复杂度显然不够。改进的算法递归加入我们想要求 585^858朴素算法为5∗5∗5∗5∗5∗5∗5∗55*5*5*5*5*5*5*55∗5∗5∗5∗5∗5∗5∗5 需要计算七次乘法如果我们将式子改为这样(5∗5∗5∗5

2020-12-03 12:26:25 284

原创 LaTeX学习日记(持续更新)

2020-11-1 LaTeX 源文件的基本结构Latex文档分为导言区和正文区(文稿区)在导言区可以用\documentclass{}引入类{} 中可以是article、book、report、letter类在正文区用\begin{环境名称}内容\end{环境名称}引入环境一个LaTeX文档只能有一个document环境%\%% 是注释语句 , 可以将整行注释文章换行只需在中间多打一个空行LaTeX的导言区主要进行全局设置在此可用\title{内容} %输入文档标题\auth

2020-11-01 19:01:39 302

原创 洛谷P1073 最优贸易(Tarjan + DFS)

题目描述CCC国有 nnn个大城市和 mmm 条道路,每条道路连接这 nnn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mmm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 111条。CCC国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终...

2018-11-01 21:43:05 130

原创 洛谷 P4306 [JSOI2010]连通数(Tarjan)

题目描述度量一个有向图恋情情况的一个指标是连通,指途中可达点对的个数。下图的连通数是14现在要你求出连通数输入格式:输入数据第一行是图顶点的数量,一个正整数NNN。 接下来NNN行,每行NNN个字符。第iii行第jjj 列的111表示顶点iii到jjj有边,000则表示无边。输出格式:输出一行一个整数,表示该图的连通数。输入样例#1:3010001100输出样例#1:...

2018-11-01 07:51:03 247

原创 洛谷P3627 [APIO2009]抢掠计划(Tarjan + SPFA)

题目描述Siruseri 城中的道路都是单向的。不同的道路由路口连接。按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机。令人奇怪的是,Siruseri 的酒吧也都设在路口,虽然并不是每个路口都设有酒吧。Banditji 计划实施 Siruseri 有史以来最惊天动地的 ATM 抢劫。他将从市中心 出发,沿着单向道路行驶,抢劫所有他途径的 ATM 机,最终他将在...

2018-11-01 07:31:53 532

原创 洛谷P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows(状压DP)

题目描述约翰家有N头奶牛,第i头奶牛的编号是SiS_iSi​,每头奶牛的编号都是唯一的。这些奶牛最近 在闹脾气,为表达不满的情绪,她们在挤奶的时候一定要排成混乱的队伍。在一只混乱的队 伍中,相邻奶牛的编号之差均超过KKK。比如当K=1K = 1K=1时,1,3,5,2,6,41, 3, 5, 2, 6, 41,3,5,2,6,4就是一支混乱的队伍, 而1,3,6,5,2,41, 3, 6, 5,...

2018-10-28 21:53:11 115

原创 洛谷P4568 [JLOI2011]飞行路线(分层图最短路)

题目描述AliceAliceAlice和BobBobBob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在nnn个城市设有业务,设这些城市分别标记为000到n−1n-1n−1,一共有mmm种航线,每种航线连接两个城市,并且航线有一定的价格。AliceAliceAlice和BobBobBob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出...

2018-10-28 21:31:18 226

原创 洛谷P2865 [USACO06NOV]路障Roadblocks(次短路)

题目描述贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友。贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路。 贝茜所在的乡村有RRR(1&amp;amp;lt;=R&amp;amp;lt;=100,0001&amp;amp;lt;=R&amp;amp;lt;=100,0001&amp;lt;=R&amp;lt;=100,000)条双向道路,每条路都联结了所...

2018-10-28 11:41:43 166

原创 洛谷P2627 修剪草坪(单调队列优化)

题目描述在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪。现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠。然而,Farm John的草坪非常脏乱,因此,Farm John只能够让他的奶牛来完成这项工作。Farm John有N(1 &amp;lt;= N &amp;lt;= 100,000)只排成一排的奶牛,编号为1…N。每只奶牛的效率是不同的,奶牛i的...

2018-10-26 14:16:53 272

原创 洛谷P1541 乌龟棋(背包)

题目背景小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。题目描述乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第NN格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中MM张爬行卡片,分成4种不同的类型(MM张卡片中不一定包含所有44种类型的卡片,见样例),每种类型的卡片上分别标有1,2,3,41,2,3,4四个数字之一,表示使用这种卡...

2018-10-26 14:11:04 201

原创 洛谷P2704 [NOI2001]炮兵阵地(状压)

题目描述司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向...

2018-10-26 13:59:23 146

原创 洛谷P2146 [NOI2015]软件包管理器 (树链剖分)

题目描述Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管理器。你...

2018-10-26 13:28:37 132

原创 洛谷P1821 [USACO07FEB]银牛派对Silver Cow Party (SPFA)

题目描述寒假到了,N头牛都要去参加一场在编号为X(1≤X≤N)的牛的农场举行的派对(1≤N≤1000),农场之间有M(1≤M≤100000)条有向路,每条路长Ti(1≤Ti≤100)。每头牛参加完派对后都必须回家,无论是去参加派对还是回家,每头牛都会选择最短路径,求这N头牛的最短路径(一个来回)中最长的一条路径长度。输入输出格式输入格式:第一行三个整数N,M, X;第二行到第M+1行:...

2018-10-26 10:11:08 307

原创 洛谷P1948 [USACO08JAN]电话线Telephone Lines(二分 + SPFA)

题目描述多年以后,笨笨长大了,成为了电话线布置师。由于地震使得某市的电话线全部损坏,笨笨是负责接到震中市的负责人。该市周围分布着N(1&amp;lt;=N&amp;lt;=1000)根据1……n顺序编号的废弃的电话线杆,任意两根线杆之间没有电话线连接,一共有p(1&amp;lt;=p&amp;lt;=10000)对电话杆可以拉电话线。其他的由于地震使得无法连接。第i对电线杆的两个端点分别是ai,bi,它们的距离为li(1&amp;l...

2018-10-26 10:01:41 137

原创 洛谷P1505 [国家集训队]旅游 (树链剖分)

洛谷P1505 [国家集训队]旅游题目描述Ray 乐忠于旅游,这次他来到了T 城。T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间有且只有一条路径。换句话说, T 城中只有N − 1 座桥。Ray 发现,有些桥上可以看到美丽的景色,让人心情愉悦,但有些桥狭窄泥泞,令人烦躁。于是,他给每座桥定义一个愉悦度w...

2018-10-25 21:49:42 172

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除