
C++常识
文章平均质量分 70
herobrineAC
信息学社会团体团长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
详解最小生成树——Prim&Kruskal
生成树是指在一个有个点的图中由n-1条边构成的子图并且每一个点都在这个子图中,其中总边权值最小的生成树就被称为最小生成树。如图所示:PrimPrim算法是通过扩展边来求最小生成树,其思路和Dijkstra非常相似,它从一个未被加入最小生成树的点开始,枚举所以从其出发的所有边,选出其中权值最小的一条边,将其加入最小生成树,将其到达的点加入最小生成树并将点标记,直到最小生成树里有n-1条边。如图所示,就是prim构造最小生成树的过程。核心代码如下:void prim(){ memset(dis,原创 2020-08-03 17:26:50 · 408 阅读 · 0 评论 -
位运算——关于状压DP
位运算就是直接对整数在内存中的二进制位进行操作。简单的说就是二进制计算,我们的状压DP是通过将状态转为二进制的01来表示再转为十进制存到数组中来达到压缩状态,所以要学好状压,一定要学好位运算.& and&,也就是and,“按位与”,也就是两个二进制数每一位与每一位进行计算,如果都为1则返回1。如1011与0101进行&运算则得到0001,如下图| or|,也就是or,“按位或”,就是两个二进制数各个数字一一进行比较,如果两个数其中一个为1则返回1。如1011和0101进行原创 2020-07-28 14:27:15 · 292 阅读 · 0 评论 -
数字三角形4——移动类DP
题目:描述一个数字三角宝塔。设数字三角形中的数字为绝对值不超过1000的整数。小K从最顶层走到最底层,每一步可向下或右斜线向下走。每走过一个节点他会把这个节点的数字加在自己计数器中。另外他最多只能向下走k次。现在小K想知道他到达底层后,计数器中可能的最大的值。输入输入数据的第1行是数字三角形的行数n和能够沿左斜线向下走的次数k,1<=n<=1000,0<=k<=100。接下来n行是数字三角形各行中的数字。所有数字都小于1000。输出如题样例输原创 2020-07-27 20:21:25 · 330 阅读 · 0 评论 -
数据结构之堆——从听说到掌握
定义堆其实是用数组实现的二叉树,并不是非常高大上。应用构建优先队列支持堆排序快速找出一个集合中的最小值(或者最大值)在朋友面前装逼:)对的分类堆分两种,其一叫大根堆,另一个叫小根堆。大根堆在大根堆中,父节点的值比每一个子节点的值都要大。也就可以理解为大根堆会对放进里面的数会自动排序。定义:priority_queue<pa,vector<pa>,gre...原创 2019-12-29 15:13:26 · 324 阅读 · 0 评论 -
电脑常用的快捷键
目录常用篇浏览器篇常用篇信息学三连ctrl+a 全选ctrl+c 复制ctrl+v 粘贴正常ctrl+x 剪切Windows+tab/alt+tab 切换页面ctrl+w 关闭当前页面alt+F4 关闭当前程序ctrl+n 新建ctrl+f 查找ctrl+g 替换ctrl+z 撤销浏览器篇...原创 2019-12-14 14:39:38 · 241 阅读 · 0 评论 -
二叉树的先序、中序、后序遍历
二叉树,就是每个节点至多只会有两个子节点,如下图就是一个二叉树。接下来就进入正题:在二叉树的遍历中,一共有三种分类:先序、中序、后序遍历。例图:先序遍历先序遍历:根节点,左子树,右子树为了让大家更容易理解,我们来模拟一下。如图,我们走到了根节点1。 1走左子树,到达了2。 1 , 2再继续走左子树到达了4。 1 , 2 , 4这时走到了叶节点,于是回到此节点...原创 2019-10-18 19:55:49 · 1932 阅读 · 0 评论 -
洛谷P2641 【初赛】普及组2015答案
一,单项选择:1 2 3 4 5 6 7 8 9 10D C C A A D A B B A二、问题求解1.92.1008三,阅读程序写结果33,2It has 18 lowercasesAb四.完善程序(1)offset=4(2)offset+dayNum[i])%7(3)dayNum[m](4)i(5)(offset+i)%...原创 2019-03-09 10:00:43 · 348 阅读 · 0 评论 -
洛谷 P1000 超级玛丽游戏
题目背景本题是洛谷的试机题目,可以帮助了解洛谷的使用。建议完成本题目后继续尝试P1001、P1008。题目描述超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。 ******** ************ ####....#. #..###.....原创 2019-04-05 08:50:39 · 766 阅读 · 0 评论 -
图论之最短路算法SPFA算法——已修正错误
SPFA(Shortest Path Faster Algorithm)算法,是一种求最短路的算法。SPFA的思路及写法和BFS有相同的地方,我就举一道例题(洛谷——P3371 【模板】单源最短路径(弱化版))来做讲解吧!如题:首先,我们先来定义一波变量吧:struct node{ int v,w; node (){ } node (int _v,int _w){ v=_v;...原创 2019-04-13 11:21:13 · 332 阅读 · 0 评论 -
拓扑排序(入门)
拓补排序是一种图论算法。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序,这种操作得出的顺序就称为拓补序列。那我们应该进行怎样的排序呢?这就是我们这次研究的重点了。这就是拓补排序的操作过程,下面我们来详解一下。1.找到一个入度为0的点2.删掉它的所有的边,将它放进队列3.找到另一个入度为0的点4.删掉它的所有的边,将它放进队列5.重复1和2,直到...原创 2019-05-03 17:01:48 · 363 阅读 · 0 评论 -
new! NOIP学习路线参考
1.常用基础数据结构2.图和树基础3.广度优先搜索4.栈和递归5.深度优先搜索6.抽象深度优先搜索7.动态规划基础8.最短路算法9.不带权图算法10.并查集11.树的基础算法12.二分进阶13.基础数论14.组合数学15.图连通性算法17.线段树和树状数组18.kmp和字典树19.离散化和哈希20.树上动态规划21.动态规划的优化22.动态规划的优化进阶2...转载 2019-05-04 10:39:51 · 1546 阅读 · 0 评论 -
洛谷P1015 回文数
题目描述若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个十进制数565656,将565656加656565(即把565656从右向左读),得到121121121是一个回文数。又如:对于十进制数878787:STEP1:878787+787878 = 165165165STEP2:165165165+561561561 = 726726726ST...原创 2019-05-04 16:44:12 · 768 阅读 · 0 评论 -
并查集(入门)
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。如下图:我们通过反复地合并,可以将其转化为下面的集合:合并所以,并查集的其中一个操纵就是合并,也就是合并两个点所在集合,转换为代码:void merge(int x, int y){fa[get(x)] =...原创 2019-05-18 16:13:34 · 531 阅读 · 1 评论 -
C++函数字典之iostream
这是一个神奇的念头,但我还是准备试一试,C++函数字典里想要尽可能地收录C++函数!!!但难度也很大,所以稍有疏忽,请多包涵。我准备以头文件位引子,来介绍C++的函数。目录" iostream"coutcin" iostream"这是一个特别常用的头文件,输入输出都靠它。内容:// Standard iostream objects -*- C++ -*-// Copyright (...原创 2019-05-31 20:43:34 · 1532 阅读 · 2 评论 -
图论之最小生成树之Kruskal算法
Kruskal算法,又称作为加边法,是配合并查集实现的。图示:如图,这是一个带权值无向图我们要求它的最小生成树。首先,我们发现在1的所有边上,连到3的边的边权值最小,所以加上这条边。然后在3上,连到4的边权值最小,加上这条边。最后,4连到2的边是最小的,加上这条边。现在,所有点都连通了,所以这个图的最小生成树就是2+2+1=5从上述操作中可以看出,Kruskal算法是...原创 2019-06-08 19:41:15 · 348 阅读 · 0 评论 -
搜索的剪枝——让爆搜变成“搜索”
剪枝,是搜索的自带神技。不管是BFS还是DFS,在搜索的过程中都难免会计算重复或不需要的东西,我们就可以直接将它剪掉,不计算它,这个过程就被形象地称为剪枝。总目录原则分类可行性剪枝最优性剪枝记忆化搜索总结原则三个词语:正确性,准确性,高效性。分类可行性剪枝这是最简单的剪枝了,如果目前答案不合法,就直接返回,人人都可掌握,基本上每个搜索都会加上去,很大众化。例题:马的遍历最优性剪枝...原创 2019-07-11 16:33:17 · 968 阅读 · 0 评论 -
让电脑冒烟的代码
#include &lt;bits/stdc++&gt;using namespace std;queue&lt;int&gt;q;int main(){ while (1){ q.push; } return 0;}最好不要运行,说真的原创 2019-03-08 18:25:15 · 12595 阅读 · 3 评论 -
更改鼠标坐标
#include&amp;lt;iostream&amp;gt;#include&amp;lt;windows.h&amp;gt; using namespace std; int main(){ POINT p; while(1){ srand(time(NULL)); int q = rand() % 50;//生成随机数 GetCursorPos(&amp;amp;p);//获取鼠标坐标原创 2019-03-08 18:16:23 · 453 阅读 · 0 评论 -
背包问题
背包问题01背包完全背包问题混合背包压缩01背包01背包,他名字的来源就是有两种概念,选和不选,所以叫01背包。这种背包的大致题目是:有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。这就是最基础的背包问题。用子问题定义状态:即dp[i, v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态...原创 2019-02-15 16:54:02 · 370 阅读 · 0 评论 -
动态规划初步——易懂
目录1.递推2.动态规划入门动态规划的科普动态规划的基本概念:动态规划的优化原理与无后效性。背包1.递推讲到动态规划就不得不提到递归,递推是经常被使用的一种简单算法。递推 是一种用若干步可重复的简单运算来描述复杂问题的方法。递推的特点在于,每一项都和他前面的若干项有一定关联,这种关联一般可以通过 递推关系式 来表示,可以通过其前面若干项得出某项的数据。对于递推问题的求解一般从初始的一个或若干个...原创 2019-02-17 20:09:15 · 414 阅读 · 0 评论 -
Hello world
Hello world 是和A+B问题并驾齐驱的一道题,也是当世的经典题之一。题目:输出“Hello world”样例输入样例输出Hello worldHello world 这道题嘛,我怎么可能只讲最简单的做法呢?前方高能C++#include<isotream>using namespace std;int main(){ cout<<...原创 2019-02-18 08:49:42 · 244 阅读 · 0 评论 -
c++的文件读入方式
这里用A+B问题做例子#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;int main(){ int a,b; freopen(&quot;in.in&quot;,&quot;r&quot;,stdin); freopen(&quot;out.out&quot;,&quot;原创 2019-02-12 20:13:50 · 607 阅读 · 0 评论 -
set(集合)_YCOJ
set,也就是集合,他像是一个箱子吧,这个箱子之能装同一种变量,比如int,string等等。用set&amp;amp;amp;lt;类型&amp;amp;amp;gt;集合名来定义。他有许多函数,如下图所示:insert 插入一个元素erase 删除一个元素count 判断元素是否在 set 中size 获取元素个数clear 清空set他有个好处是自动排序去重,不需要人工操作。访问他需要迭代器比如:(set&amp;原创 2019-02-13 09:29:07 · 207 阅读 · 0 评论 -
图和树基础
2. 图和树基础 2.1. 什么是图 在一个社交网络中,每个帐号和他们之间的关系构成了一张巨大的网络,就像下面这张图: 那么在电脑中,我们要用什么样的数据结构来保存这个网络呢?这个网络需要用一个之前课程里未提到过的数据结构,也就是接下来要讲解的 图 结构来保存。到底什么是图?图是由一系列顶点和若干连结顶点集合内两个顶点的边组成的数据结构。数学意义上的图,指的是...转载 2019-02-13 09:30:07 · 1061 阅读 · 1 评论 -
字符串_YCOJ
字符串就是许多个字符合在一起,就变成了字符串。用string来定义变量。 注:字符串需要头文件 #include &amp;amp;amp;lt;string&amp;amp;amp;gt;字符串具备属于自己的函数,如:s.size(); // 得到字符串长度s.find('a');//从字符串s里寻找'a'的位置,若存在'a'则返回子串开头字符下标,否则返回-1。s.find(&amp;amp;quot;hello&a原创 2019-02-13 09:32:28 · 368 阅读 · 0 评论 -
C++结构体的应用_YCOJ
结构体是一种自定义的东西,用struct来定义。在他里面, 可以装许多东西,比如int,string,char,bool等等等等。 如: struct a{ string name; int a; int b; }; …… a s; cin &amp;amp;gt;&amp;amp;gt; s.name; 代码示范: 例题...原创 2019-02-13 13:29:11 · 475 阅读 · 1 评论 -
C++二分查找算法_YCOJ
首先,我们来了解一下二分查找: 二分查找这种东西嘛,是一种算法。他需要三种东西,left,right,mid,简称l,r,mid(这个好像没改,就取了一个首字母而已)。相当于在一个数组里先分成两半,看我们的mid(也就是中间数,公式:(l+r)/2)是否大于或小于我们要找的那个数(就设他为x嘛);如果小于,就说明x在后一半;反之就说明x在前一半;然后在对剩下的做上述处理。以此类推,直到r-l&amp;amp;amp;...原创 2019-02-13 13:32:45 · 690 阅读 · 0 评论 -
广度优先搜索
3.1. 队列这一节我们先学习一个新的数据结构——队列。队列(queue) 是一种线性的数据结构,和栈一样是一种运算受限制的线性表。其限制只允许从表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。一般允许进行插入的一端我们称为队尾,允许删除的一端称为队首。队列的插入操作又叫入队,队列的删除操作又叫出队。可以把队列想象成购物时排队结账的队伍,先排队的人会先结账,后排...转载 2019-02-13 14:32:31 · 412 阅读 · 3 评论 -
A+B Problem——经典中的经典
A+B Problem,这道题,吸收了天地的精华,是当之无愧的经典中的经典中的经典。自古以来OIer都会经过它的历练(这不是白说吗?),下面就有我herobrine来讲讲这道题的各种做法。好吧,同志们,我们就从这一题开始,向着蒟蒻 呸,大佬的路进发。任何一个伟大的思想,都有一个微不足道的开始。前方高能C#include &lt;stdio.h&gt;int main() { i...原创 2019-02-13 20:41:28 · 9672 阅读 · 6 评论 -
常用基础数据结构
1.1. 动态数组有些时候想开一个数组,但是却不知道应该开多大长度合适,因为我们需要用到的数组可能会根据情况变动。这时候我们就需要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。动态数组的实现也不难,在 C++ 里面有已经写好的标准模板库(StandardTemplate Library),就是我们常说的 STL 库,实现了集合、映射表、栈、队列等数...转载 2019-02-14 07:53:31 · 695 阅读 · 1 评论 -
The History of ‘Hello, World’
It’s the most famous program. Known as the first example in nearly every programming language for every programmer, where did this message come from?As a function, the computer program simply tells t...转载 2019-03-02 09:49:42 · 285 阅读 · 0 评论 -
“Hello world”的历史
“Hello world”的历史这是最着名的节目。被称为每个程序员几乎所有编程语言的第一个例子,这个消息来自哪里?作为一个功能,计算机程序只是告诉计算机显示“Hello,World!”这个词。传统上,它是开发人员用来测试系统的第一个程序。对于程序员来说,在屏幕上看到两个单词意味着他们的代码可以编译,加载,运行,他们可以看到输出。这是一个测试,标志着一个程序的开始。在过去的几十年里,它已经发展...翻译 2019-03-02 10:15:55 · 1084 阅读 · 0 评论 -
机房小游戏
众所周知,在机房里是不能玩游戏的,但某些人仍然胆大包天,想在老师们的火眼金睛下偷偷地“爽”一把,这里我就用我以往的经验给大家推荐一些小游戏。qwqslay.one名字大作战一些乱七八糟的小游戏slay.one这款游戏,许多OIer都非常地熟悉,是一款2D的枪战小游戏,正版在steam上面有,可是贵的出奇,对于我们这种穷人,只能在网页上玩玩盗版了。网址名字大作战这款游戏,真的好像不算游戏...原创 2019-02-15 19:56:00 · 9702 阅读 · 3 评论 -
深度优先搜索
5.1. 从递归到深度优先搜索深度优先搜索,简称 dfs,是一个经典的搜索算法,能够把具体的方案找出来。现在我们要把 dfs 和递归联系起来。前面学习递归的时候,我们学习过用递归实现阶乘int factorial(int n) {if (n == 1) {return 1;}return n * factorial(n ‐ 1);}和用递归实现斐波那契数列 int fib(i...转载 2019-02-15 09:53:21 · 382 阅读 · 0 评论