C++
文章平均质量分 95
C++是一种被广泛使用的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。 比雅尼·斯特劳斯特鲁普博士在贝尔实验室工作期间在20世纪80年代发明并实现了C++。
Ljnoit
Copyright 2016-2024 Ljnoit
本人荣誉:第17届浙江省大学生程序设计竞赛场外赛金牌️
展开
-
【C++】信息学联赛机试常见错误和注意事项
1.文件输入输出(freopen)格式打错C++:#include <iostream>#include <cstdio>using namespace std;int main() { freopen("ex.in","r",stdin); freopen("ex.out","w",stdout); cin >> a >> b; cout << a+b << endl; fclose(stdin); //可原创 2020-11-05 20:48:29 · 798 阅读 · 0 评论 -
【C++】清空队列(queue)的操作
文章目录方法一 遍历出队列方法二 赋空值方法三 用swap与空队列替换C++的queue本身不支持clear()操作,我们需要手动完成。方法一 遍历出队列适用于FIFO队列和优先队列。while(!q.empty()) q.pop();方法二 赋空值适用于FIFO队列。q=queue<int>();方法三 用swap与空队列替换适用于FIFO队列 ↓inline void clear(queue <int> &q) { queue <in原创 2020-07-27 10:25:40 · 6000 阅读 · 0 评论 -
【C++】最短路径模板题题答
文章目录Floyd算法题目提示代码Dijkstra算法题目提示代码Spfa算法题目提示代码1代码2Floyd算法题目HihoCoder-1089vjudge提示小Ho道:“你说的很有道理,我只需要从每个节点开始使用Dijstra算法就可以了!”小Hi摇摇头道:“解决问题不是关键,学到知识才是关键,而且知识本身也远远没有掌握学习的方法重要!”小Ho只得答道:“好的好的,听你说便是了!”于是小Hi便开心道:“这次要说的算法叫做Floyd算法,是一种用于求图结构上任意两点间最短距离的算法!”小原创 2020-05-16 08:56:29 · 753 阅读 · 0 评论 -
【C++】十大经典排序算法详解
文章目录排序算法总览比较类排序算法交换排序一. 冒泡排序算法思想算法步骤动图演示代码实现二. 快速排序算法思想算法步骤动图演示代码实现三. 插入排序算法思想算法步骤动图演示代码实现四. 希尔排序算法思想算法步骤动图演示代码实现五. 选择排序算法思想算法步骤动图演示代码实现六. 堆排序算法思想算法步骤动图演示代码实现七. 归并排序算法思想算法步骤动图演示代码实现非比较类排序算法一. 计数排序算法思想...翻译 2020-04-18 11:21:12 · 6362 阅读 · 5 评论 -
【C++】堆排序
堆排序百科名片排序操作动图演示代码实现百科名片堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。排序操作在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:最大堆调整(Max Heapify):...原创 2020-04-15 14:05:50 · 211 阅读 · 0 评论 -
【C++】C++中头文件使用双引号与书名号的区别
C++中头文件使用""与<>的区别:使用" "是搜索所有目录。使用< >是搜索当前目录。一般情况下,自行定义的头文件应该用"",因为这些文件放在工程目录(也就是源程序的目录)下,而不是放在公共头文件目录下,如果用<>则找不到头文件。而系统提供的头文件,比如math.h,可以用<>。...原创 2020-03-29 12:43:09 · 3295 阅读 · 0 评论 -
【C++】dfs序与树上差分
dfs序与树上差分 引入 dfs序就是用递归的方法遍历一棵树的顺序。 这是一个括号序列,有助于解决树上的很多问题。树上差分算法,是一个适用于树上区间操作的算法.它是差分数组,前缀和求解的树上拓展.众所周知,树这类特殊的结构,往往具有很多性质,而树上差分往往就是结合这些性质,进行高效率的处理.我们还需要知道一点,树上差分基本上不会出裸题,往往会和大量的算法结伴出行.树上差分,准确来说不是算法,而是一种优秀的思想.原创 2020-03-24 10:51:30 · 860 阅读 · 0 评论 -
【C++】浅谈迭代加深搜索
迭代加深搜索简介步骤伪代码解题策略简介迭代加深是一种 每次限制搜索深度的 深度优先搜索。它的本质还是深度优先搜索,只不过在搜索的同时带上了一个深度 ddd ,当ddd 达到设定的深度时就返回,一般用于找最优解。如果一次搜索没有找到合法的解,就让设定的深度+1 ,重新从根开始。既然是为了找最优解,为什么不用 BFS 呢?我们知道 BFS 的基础是一个队列,队列的空间复杂度很大,当状态比较...原创 2020-03-21 20:09:21 · 586 阅读 · 0 评论 -
【Code】深谈Pascal转C++
Pascal转C++sacnf() 和 printf()#define 宏定义三目运算符结构体 struct文件操作命名空间在浅谈了Pascal转C++后,我们深谈Pascal转C++。sacnf() 和 printf()scanf 与 printf 其实是 C 语言提供的函数,保存在<cstdio>或<stdio.h>头文件中。一般情况下,它们的速度比 cin 和 ...原创 2020-03-19 11:21:22 · 523 阅读 · 2 评论 -
【Code】浅谈Pascal转C++
Pascal转C++引入准备和比较简单的转换头文件输入输出注释变量变量的类型变量的定义全局变量和局部变量作用域常量赋值语句if条件判断语句循环语句for循环while循环函数数学函数(自带函数)排序函数自定义函数关于字符,ASCII码的问题字符串字符数组string类型杂项引入中国计算机学会于2016年11月1日发布了《CCF关于NOI系列赛事程序设计语言变更的公告》,内容如下:根据国际信息...原创 2020-03-18 15:31:56 · 844 阅读 · 1 评论 -
【C++】输出优化(快写)
原理同样是众所周知, putchar 是用来输出单个字符的函数因此将数字的每一位转化为字符输出以加速要注意的是,负号要单独判断输出,并且每次 %(mod)取出的是数字末位,因此要倒序输出。代码实现inline int write(int x) { if(x<0) { x=-x; putchar('-'); } if(x>9) write(x/10); pu...原创 2020-03-14 19:25:40 · 1567 阅读 · 0 评论 -
【Code】C语言与C++语言的区别
C语言与C++语言的区别区别1——宏与模板区别2——指针与引用区别3——struct区别4——const区别5——内存分配本文介绍 C 与 C++ 之间重要的或者容易忽略的区别。尽管 C++ 几乎是 C 的超集,C/C++ 代码混用一般也没什么问题,但是了解 C/C++ 间比较重要区别可以避免碰到一些奇怪的 bug。如果你是以 C 为主力语言的 OIer,那么本文也能让你更顺利地上手 C++。...转载 2020-03-13 11:22:02 · 291 阅读 · 0 评论 -
【C++】AC自动机
我知道,很多人在第一次看到这个东西的时侯是非常兴奋的。(别问我为什么知道)不过这个自动机啊它叫作 `Automaton` ,不是 `Automation` ,让萌新失望啦。切入正题。似乎在初学自动机相关的内容时,许多人难以建立对自动机的初步印象,尤其是在自学的时侯。而这篇文章就是为你们打造的。笔者在自学 AC 自动机后花费两天时间制作若干的 gif,呈现出一个相对直观的自动机形态。尽管这个图似乎不太可读,但这绝对是在作者自学的时侯,画得最~~妙不可读~~的 gif 了。另外有些小伙伴问这个 gif 拿什么画转载 2020-03-12 20:05:24 · 998 阅读 · 0 评论 -
【Code】代码答案错误怎么办?三种方法教你如何查错
查错的方法1.目测法2.调试法3.对拍法在写完代码的时候,测一下样例,很多时候样例过了,但交到OJ上却挂了,始终找不到错误原因。有时候连样例都过不了。因此,我总结了三种方法教给大家,让大家有方向地去查错,而不是看着程序发呆。希望大家可以把三种方法熟练掌握,并懂得去运用。1.目测法目测法并不是简单的目测。此方法用于数据小且少的题目。用例子来说话:FZU-1889 龟兔赛跑原题 vju...原创 2020-03-11 15:45:06 · 9452 阅读 · 0 评论 -
【C++】进制转换
进制转换十进制转二进制二进制转十进制十进制转八进制十进制转十六进制八进制转十进制十六进制转十进制八进制转十六进制十六进制转八进制十进制转x进制(通用)m进制转10进制(通用)十进制转二进制#include <cstdio>int main() { int n; int a[1000]; scanf("%d",&n); int i=n,j=0; while(i)...原创 2020-03-07 10:37:37 · 318 阅读 · 2 评论 -
【C++】矩形面积并、矩形面积交、矩形周长并(离散化、扫描线、线段树总结)
文章目录一.矩形面积并题目:Atlantis方法一:离散化方法二:扫描线方法三:线段树+扫描线二.矩形面积交三.矩形周长并一.矩形面积并题目:AtlantisPOJ-1151 HDU-1542 LA-2184 ZOJ-1128链接:https://vjudge.net/problem/HDU-1542方法一:离散化#pragma GCC optimize(3,"Ofast","...原创 2020-03-06 11:35:40 · 1471 阅读 · 0 评论 -
【C++】二分图
二分图百科名片举例定义二分图的判定——黑白染色例1 二分图判定题目描述输入描述输出描述样例输入样例输出思路代码二分图的最大匹配例2 二分图最大匹配之匈牙利算法题目描述输入描述输出描述样例输入样例输出思路代码例3 The Perfect Stall题目大意思路代码二分图的最大独立集例4 Girls and Boys代码例5 Knights in Chessboard思路二分图的最小点覆盖例6 Mud...原创 2020-03-05 11:13:02 · 1053 阅读 · 0 评论 -
【C++】字典树(trie树)
字典树(trie树)引入百科名片例1 单词查找树题目描述输入描述输出描述样例输入样例输出思路代码引入当我们走进图书馆的阅览室寻找书时,会不由自主地根据书架上的分类标签寻找自己所喜好的书籍;当打开电脑中的资源管理器时,我们会看到一层一层的目录结构。它们的存在,方便了我们生活中的一个重要的问题——检索。在信息学竞赛( Olympiad in Informatics ,简称 OI)的学习过程中,我...原创 2020-03-04 11:18:02 · 536 阅读 · 0 评论 -
【C++】树型动态规划
树型动态规划摘要例1 没有上司的舞会题目描述输入描述输出描述样例输入样例输出思路1 定义状态:2 转移方程:3 初始值:4 答案:代码例2 数字转换题目描述输入描述输出描述样例输入样例输出样例说明数据范围代码例3 二叉苹果树题目描述输入描述输出描述样例输入样例输出数据范围思路1 状态定义2 转移3 初始4 答案代码例4摘要之所以这样命名树规,是因为树规的这仙特殊性:没有环,dfs是不会重复,而...原创 2020-03-03 08:57:39 · 370 阅读 · 0 评论 -
【C++】卡常技巧
1.若乘上一个2的倍数的数值,可改用左移运算符例1:x=x*2 或 x*=2 改成:x=x<<1 或 x<<=1(log22=1)例2:x=x*32 或 x*=32改成:x=x<<5 或 x<<=5(log232=5)2.若除以一个2的倍数的数值,可改用右移运算符例1:x=x/2 或 x/=2改成:x= x&g...原创 2020-03-02 09:55:05 · 5365 阅读 · 5 评论 -
【C++】字符串匹配算法——KMP算法
背景介绍在文本编辑中,我们经常要在一段文本中某个特定的位置找出某个特定的字符或模式。再比如,在HTTP协议里的字节流,有各种关键的字节流字段,对HTTP数据进行解释就需要用到模式匹配算法。由此,便产生了字符串的匹配问题。KMP算法是由Knuth,Morris,Pratt三人共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间(n+m)内完成匹配查找,而不会发生退化,是一个非常...原创 2020-03-01 10:30:24 · 630 阅读 · 0 评论 -
【C++】单调队列优化动态规划
引入可用单调队列优化的动规有一大类题型,它们多半都有一个特征:可以化归为序列中定长区间的最值问题。注意这里必须是定长区间,否则应用RMQ算法。下面举一个例子:输入:第一行两个正整数N(N<=600000),M。接下来一行N个数。输出:对于每个区间[i,i-M+1],输出其中的最小值思路:很显然这道题数据大到不允许利用RMQ的各种O(NlogN)的算法,想到每一次找最小...原创 2020-02-29 09:43:22 · 359 阅读 · 0 评论 -
【C++】最近公共祖先 LCA
最近公共祖先百科名片最近公共祖先Lowest Common AncestorsLCA简单引入对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。红色的都是是A和B的公共祖先,但只有最近的C才是最近公共祖先。LCA问题是树上的一个经典问题,在很多方面有着广泛的应用,比如求LCP(最长公共前缀),接下来我们就来介绍...原创 2020-03-09 11:30:45 · 2975 阅读 · 0 评论 -
【C++】强连通分量
有向图的强连通分量。例题题目链接:http://poj.org/problem?id=2186vjudge:https://vjudge.net/problem/POJ-2186题目大意:有一群牛,总数为N(N<=10000)。题目数据为牛之间的关系,比如说1仰慕2,2仰慕3等等,设这种仰慕是可以传递的,如果1仰慕2,那么1也会同时仰慕2仰慕的那些牛。(关系数e<=500...原创 2020-02-25 09:45:48 · 903 阅读 · 0 评论 -
【C++】树状数组
什么是树状数组?顾名思义,就是用数组来模拟树形结构呗。那么衍生出一个问题,为什么不直接建树?答案是没必要,因为树状数组能处理的问题就没必要建树。和Trie树的构造方式有类似之处。树状数组可以解决什么问题?可以解决大部分基于区间上的更新以及求和问题。树状数组和线段树的区别在哪里?树状数组可以解决的问题都可以用线段树解决,这两者的区别在哪里呢?树状数组的系数要少很多,就比如字符串模拟大数可以...原创 2020-02-24 14:39:54 · 966 阅读 · 0 评论 -
【C++】图论基础总结(图的遍历+最短路径算法)
什么叫图论?研究图的问题一门高深的学科。什么是图?就是由点和线组成的图形G=<V,E>G=graph V=vertex E=edge原创 2020-02-23 14:44:02 · 4510 阅读 · 0 评论 -
【Code】OI竞赛中程序文件输入输出格式
OI竞赛中程序文件输入输出格式C#include <stdio.h>int main() { freopen("ex.in","r",stdin); freopen("ex.out","w",stdout); scanf("%d%d",&a,&b); printf("%d\n",a+b); fclose(stdin); fclose(stdout...原创 2019-10-13 14:44:39 · 1293 阅读 · 0 评论 -
【C++】高精度加减乘除模板
利用重载运算符#pragma GCC optimize(3,"Ofast","inline")#pragma G++ optimize(3,"Ofast","inline")#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include ...原创 2020-02-19 08:23:19 · 628 阅读 · 0 评论 -
【C++】while(scanf("%d",&n)!=EOF)怎么结束?
while(scanf("%d",&n)!=EOF) {}这个循环读入怎么结束?Windows/DOS下:按Ctrl+ZLinux/Unix下:按Ctrl+D原创 2020-02-17 15:36:25 · 2185 阅读 · 1 评论 -
【C++】球盒问题总结(八种情况)
n个球放入m个盒子里一共是八种情况:1.球相同 盒不同 无空箱① ans=C(n-1,m-1) (n>=m)② ans=0 (n<m)2.球相同 盒相同 允许空箱ans=C(n+m-1,m-1)3.球不同 盒相同 无空箱即第二类斯特林数①dp[n][m]=m*dp[n-1][m]+dp[n-1][m-1] (1<=m<n)...原创 2020-02-08 10:00:23 · 5649 阅读 · 4 评论 -
【C++】输入优化(快读)
快速读入,简称快读,比cin()、printf()等都快void类型的快读#include <cctype>//isdigit()在<cctype>头文件中,用于判断字符是否为阿拉伯数字(0-9).inline void read(int &x){ x=0; char c=0; int w=0; while (!isdigit(c)) w|=...原创 2020-02-03 20:51:37 · 5537 阅读 · 4 评论 -
【C++】STDIO交互题
交互题这类型不同于普通的题。可以理解为有个问题需要你解决,你通过输入某些东西。表示你要问系统的问题,这时系统会回答你的问题。在代码中的回答方式就是会输入某个东西就是系统给你的答案,通过这些信息你可以得到问题的解。你是不可以自己测试的,只能提交给系统测试。有个东西需要用到C++中的 fflush(stdout); ,这个东西是用来清空输出缓存区的因为你一直提问,一直输出,就需要清...原创 2020-02-03 14:06:06 · 3853 阅读 · 0 评论 -
【C++】max和min函数的实现方法
1.使用algorithm头文件#include <algorithm>using namespace std;inline int max(int a,int b) { return max(a,b);}inline int min(int a,int b) { return min(a,b);}2.宏定义#define max(a,b) (((a)&g...原创 2020-01-23 20:38:26 · 7881 阅读 · 1 评论 -
【C++】在线IDE
1.洛谷在线IDEhttps://www.luogu.com.cn/ide2.简单教程代码编辑器https://www.twle.cn/t/yufei/cpp/helloworld3.菜鸟工具https://c.runoob.com/compile/12原创 2020-01-21 19:36:38 · 6717 阅读 · 0 评论 -
【C++】字符串和字符数组的整行读入
1.用scanf()char str[100];scanf("%[^\n]",&str);getchar();说明:在scanf函数中,可以使用%c来读取一个字符,使用%s读取一个字符串, 但是读取字符串时不忽略空格,读字符串时忽略开始的空格,并且读到空格为止,因此只能读取一个单词,而不是整行字符串。scanf函数也可完成这样的功能,而且还更强大。这里主要介绍一个参数,%[...原创 2020-01-19 17:53:38 · 6730 阅读 · 1 评论 -
【C++】gcd函数的写法
gcd函数C++写gcd函数有几种写法,下面介绍几种。while循环inline int(int a,int b) { int r; while(b>0) { r=a%b; a=b; b=r; } return a;}三目运算符inline int gcd(int a,int b) { ...原创 2019-08-12 18:25:00 · 70388 阅读 · 16 评论