![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础知识
文章平均质量分 51
讲解一些初学的知识
Keven_11
这个作者很懒,什么都没留下…
展开
-
学习信息学竞赛的建议(退役Oiler)
本人初中在强省弱市(四川自贡),从小学六年级自学信息学,NOIP普及一等奖,目前高二(重庆市巴蜀中学),已经没学信息,曾经怀揣拿金牌的美梦。原创 2024-07-21 16:03:54 · 231 阅读 · 0 评论 -
C++基础:二维费用的背包问题
一种思路保存原有的状态(dp[i][j])、方程,选取一个费用优先满足条件,并求出此时的价值,再看另一个费用是否满足条件。首先考虑01背包转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]),这只有一个费用。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。我们设dp[i][j][k]表示在前i个物品中选取、满足费用1的限制且满足费用2的限制的最大价值。体积是 vi,重量是 mi,价值是 wi。原创 2023-06-13 16:53:51 · 1846 阅读 · 0 评论 -
(娱乐)自贡市解中初三七班现状
解放路中学原创 2023-02-03 12:48:46 · 405 阅读 · 1 评论 -
C++基础:KMP
SPPSPS输入格式NPPMSS输出格式0数据范围1≤N≤1051≤M≤106这就是著名的KMP问题。原创 2023-01-07 18:04:15 · 595 阅读 · 0 评论 -
关于乘法逆元的一笔记
存在x使ax≡1(mod b) 则x为逆元。充要条件:gcd(a,b)=1。原创 2022-11-12 16:33:59 · 142 阅读 · 0 评论 -
C++基础:扩展欧几里得算法
裴蜀定理内容:有一对正整数a、b,那么一定存在非0整数x、y,使得 ax+by=(a,b)扩展欧几里得算法用于求ax+by=(a,b)中的一个特解x,y原创 2022-11-06 11:45:45 · 685 阅读 · 0 评论 -
C++基础:运算符优先级
记忆顺序1、单目运算符2、双目运算符,先乘除,后加减,再位移。3、关系运算符,先大于小于,后等于不等于。4、位运算符,位与,异或在中间,位或5、逻辑运算符,先与后或6、三目运算符一个。7、等于运算符一排原创 2022-08-20 17:50:51 · 1687 阅读 · 0 评论 -
C++基础:计数原理 例题
计数原理 例题原创 2022-08-18 16:49:29 · 287 阅读 · 0 评论 -
C++基础:CSP & NOIP 烤前注意
应我们慈祥亲爱面容和蔼的老大哥要求,给各位dark♂佬做一下烤前指导qwq。那么,烤CSP前有啥注意事项呢?(我就不说啥算法,程序的事项)FIRST AND THE MOST IMPORTANT:1.freopen(NOTICE THE CSTDIO),保灵,教辅工具与人生路劈叉捆绑安装,且一旦安装无法卸载。2.注意你的文件格式,大文件夹(命名为你的准考证号)里面夹着四个小文件夹(每一个文件夹分别命名为每一道题的题目),...转载 2022-08-17 16:23:29 · 839 阅读 · 0 评论 -
C++基础:数据结构 代码模板
#include#includeusing namespace std;const int N=1e5+10;int head,e[N],ne[N],idx;void init(){ head=-1; idx=0;}void add_to_head(int x){//头节点插入 e[idx]=x; ne[idx]=head; head=idx++;}void remove(int k){//删除 ne[k]=ne[ne[k]];}vo原创 2022-08-17 16:16:55 · 677 阅读 · 0 评论 -
C++基础知识:挂分小技巧
常见的挂分小技巧#max(a,b)或者min(a,b)写成(a,b),这样会取后面的数,即b。在结构体里开数组开的太大。这种情况下即使没爆空间也会出现许多奇怪的错误。数组的下标减出负数导致RE。...原创 2022-08-01 18:05:53 · 598 阅读 · 2 评论 -
C++基础:差分约束系统
基本思路:利用最短路中di≤dj+c(j指向i,边权为c,此指算法结束后)将求解三角不等式组转换为(单源)最短路问题三角不等式(组): xi≤xj+ck 其中xi、xj是自变量,ck是常量差分约束系统有如下功能:求不等式组的可行解源点需要满足条件:从原点出发,一定可以走到所有的边。故可设“超级源点”超级源点:与每一个点相连的虚拟源点步骤:先将每个不等式xi≤xj+ck转化成一条从xj走向xi,长度为ck的一条边 找一个超级源点,使得该院点一定可以遍历到所有边 从源点求一边单..原创 2022-04-04 15:55:10 · 236 阅读 · 0 评论 -
C++基础:线段树(基础)
目录声明正文区间问题和线段树线段树的建立线段树的单点更新线段树的查询单点查询区间查询声明线段树理解起来不难,但是题灵活多变,难,建议学之后多刷题正文区间问题和线段树有一类区间问题可以抽象成如下模型。给定包含 n 个数的数组 a1,a2,⋯an。有两种操作 查询区间[l,r]最小的数。 修改第ai为x。 这里,为了解决这个问题,我们介绍一种灵活的数据结构——线段树。我们用一棵二叉树来表示线段树,线段树...原创 2022-01-31 16:27:48 · 430 阅读 · 1 评论 -
C++基础:2-SAT问题
概述现有一个由 N 个布尔值组成的序列 A ,给出一些限制关系,比如 A[x] AND A[y]=0、A[x] OR A[y] OR A[z]=1等,要确定A[0⋯N−1]的值,使得其满足所有限制关系。这个称为SAT问题(已确定非2-SAT的SAT问题为NP完全问题),特别的,若每种限制关系中最多只对两个元素进行限制,则称为 2-SAT 问题。算法我们可以把每个点拆成两个点,一个代表取值为 true ,另一个代表取值为 false ,对点对进行遍历,如果两个点都没被选,则先假设选 false ,原创 2022-01-30 18:24:02 · 1568 阅读 · 0 评论 -
C++基础:二分图(染色法判定)
目录概述判断二分图算法实例C++ 示例代码概述对于一个无向图 G=(V,E) ,它的顶点集 V 可以恰好分为两个不相交的子集,并且在这个无向图中,任意一条边所连接的两个顶点都分别属于这两个不同的子集,那么我们将这个无向图称作 二分图(如果你愿意也称 二部图)。图例:(A中的点没有边直接相连,B同理)判断二分图我们可以使用 DFS 的方法对图进行染色,遍历所有点,如果当前点未被染色,则从此点开始进行 DFS 并进行染色,对路径上的点交替染色,如果发现在某个点时.原创 2022-01-30 18:13:37 · 2613 阅读 · 0 评论 -
C++基础:差分约束系统
基本思路:利用最短路中di≤dj+c(j指向i,边权为c,此指算法结束后)将求解三角不等式组转换为(单源)最短路问题三角不等式(组): xi≤xj+ck 其中xi、xj是自变量,ck是常量差分约束系统有如下功能:求不等式组的可行解源点需要满足条件:从原点出发,一定可以走到所有的边。故可设“超级源点”超级源点:与每一个点相连的虚拟源点步骤:先将每个不等式xi≤xj+ck转化成一条从xj走向xi,长度为ck的一条边 找一个超级源点,使得该院点一定可以遍历到所有边 从源点求一边单..原创 2022-01-30 17:56:39 · 711 阅读 · 0 评论 -
C++基础:tarjan算法
一.割点和点双连通分量1.割点在一个 无向连通图 中,如果删除这个点和这个点关联的所有边,剩下图的连通分量大于 1,也即剩下的图不再连通,那么我们称这个点是 割点。比如对于下面这个图,割点有两个,分别是 1 和 3。这说明一个图可以有多个割点。2.点双连通图(点双)一个点双连通图的定义如下:一个 无向连通图 ,对于任意一个点,如果删除这个点和这个点关联的所有边,剩下的图还是连通的,那么称这个图是一个 点双连通图,也就是点双连通图中不会有割点出现。下图是一个点双连通图。3.翻译 2022-01-29 22:56:52 · 1489 阅读 · 1 评论 -
C++基础:连通图与连通分量的区别
连通图:连通分量(极大连通子图):原创 2021-11-14 11:52:40 · 944 阅读 · 0 评论 -
C++基础:string使用详解
string使用详解0.目录1.准备2.初始化3.赋值4.访问5.连接6.比较7.子串8.交换9.查找10.修改11.插入12.删除13.特性描述14.字符串流处理1.准备首先,需要做这样的事情#include <iostream>#include <string>using namespace std;//之后就可以体验string内置的各种强大功能了—string相关迭代器//返回string的起始位置const_iterator原创 2021-10-03 21:46:18 · 490 阅读 · 0 评论 -
C++基础:运算符优先级
原创 2021-09-12 21:09:48 · 93 阅读 · 0 评论 -
基础概率与期望
一.对数的定义若有,转载 2021-08-29 08:26:17 · 120 阅读 · 0 评论 -
C++基础:STL合集
vector, 变长数组,倍增的思想 vector<int> a;//定义了一个int类型的vector(int类型,名称为a,下同) vector<int> b(10);//定义了一个长度为10的vector vector<int> c(10,3);//定义了一个长度为10、里面每一个元素都为3的vector vector<int> d[10];//定义了10个vector size() 返回元素个数 em...翻译 2021-08-18 19:53:19 · 142 阅读 · 0 评论 -
C++基础:二叉树性质
转载 2021-08-18 15:07:22 · 103 阅读 · 0 评论 -
C++基础:关于结构体重载运算符的重要细节
我们来观察下面的结构体重载运算符代码:给set重载<: #include <iostream>#include <set>using namespace std;struct Point{ int x,y; bool operator<(const Point &rhs)const{ if(x==rhs.x){ return y<rhs.y; }else{原创 2021-08-18 14:25:41 · 2431 阅读 · 0 评论 -
主定理
先介绍几个符号的含义。符号Θ,读音西塔,既是上界也是下界,等于,严格贴紧。符号O,读音殴,表示上界,小于等于,贴紧未知。符号o,读音也是殴,小于,不贴紧。符号Ω,读音偶眯嘎,表示下界,大于等于,贴紧未知。符号ω,读音也是偶眯嘎,表示下界,大于,不贴紧。上面的“贴紧”是我根据tight翻译过来的(不是很准确啊),大概就是是否严格等于的意思吧。意思就是Θ是平均时间复杂度,O是最坏情况下的复杂度,Ω是最好情况下的复杂度。假设我们有递推关系式:T(n)=aT(nb)+f(n)其转载 2021-08-14 20:24:01 · 448 阅读 · 0 评论 -
时间复杂度
转载 2021-08-13 19:42:27 · 103 阅读 · 0 评论 -
C++笔记:输入输出、变量、变量加减乘除
C++输入输出、变量、变量加减任何一个编程软件都能够进行输入输出,C++也不例外。#include<iostream>using namespace std;int main(){ cout<<" 你好,世界。"<<endl;//1 int x;//2 cin>>x;//3 x=x+1;//4 x+=1;//4 x++;//4 ++x;//4 x=x-1;//5 x-=1;//5 x--;//5 --x;//5 return 0原创 2020-07-21 09:59:06 · 2060 阅读 · 1 评论 -
动态规划
动态规划动态规划有点类似于找规律,如递推哪样,使用此方法的数组一般用 dp[ ] 表示。常见的问题有 背包、二取方格数等等。起源:1951 年美国数学家 R.Bellman 等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。与此同时,他提出了解决这类问题的“最优化原理”,从而创建了解决最优化问题的一种新方法:动态规划。动态规划算法通常...翻译 2020-03-28 15:06:22 · 415 阅读 · 2 评论 -
C++笔记:开始学习C++最基础代码模型
C++基础代码模型百度说:C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。学任何东西,要从最基础的开始学,下面讲解C++最基础代码模型:#include<iostre原创 2020-07-19 19:57:06 · 441 阅读 · 1 评论 -
广度优先搜索BFS bfs
广度优先搜索BFS bfs广度优先搜索,又称宽度优先搜索,简称 bfs,我们以后都会用 bfs 来表示广度优先搜索。与深度优先搜索不同的是,广度优先搜索会先将与起始点距离较近的点搜索完毕,再继续搜索较远的点,而深搜却是沿着一个分支搜到最后。bfs 从起点开始,优先搜索离起点最近的点,然后由这个最近的点扩展其他稍近的点,这样一层一层的扩展,就像水波扩散一样。bfs 需要借助队列来实现:初始...转载 2020-05-02 14:11:30 · 296 阅读 · 3 评论 -
C++笔记:栈
一.什么是栈栈(stack)与队列、动态数组等一样,是一种线性数据结构,其规则为:先进后出,后进先出,与队列恰好相反。栈的例子很常见。几乎所有的自助餐厅都有一堆托盘或盘子,你从顶部拿一个,就会有一个新的托盘给下一个客人。想象桌上有一堆书, 只有顶部的那本书封面可见,要看到其他书的封面,只有先移除他们上面的书。二.栈的一些概念栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。 入栈:栈的插入操作。 出栈:栈的删除操作。 栈的图例...原创 2020-08-16 21:03:23 · 170 阅读 · 1 评论 -
C++笔记:交换算法和swap()函数
C++笔记之交换算法和swap()函数如果要交换两个变量所赋的值:#include<iostream>using namespace std;int main(){ int a=0,b=0;//初始化 cin>>a>>b; int t=0;//初始化 t=a;//1 a=b;//1 b=t;//1 cout<<"a="<<a<<"b="<<b<<endl;//输出交换后a和b的值 retu原创 2020-07-22 15:06:08 · 778 阅读 · 1 评论 -
C++笔记:二进制与位运算
C++笔记:二进制与位运算一、二进制二进制指二进制计数系统,用01串表示。1.十进制转二进制:整数部分,把十进制转成二进制一直用短除法分解至商为 0。读余数从下读到上,即是二进制的整数部分数字。小数部分,则用其乘 2,取其整数部分的结果,再用计算后的小数部分依此重复计算,算到小数部分全为 0 为止,之后读所有计算后整数部分的数字,从上读到下。例:()请原谅本小娃的字写的一般2.二进制转十进制按权展开求和。不懂的话可以看一看例子。例:(看不见的那个地方是1。)3.二进制加减法:二进制加减法与原创 2020-07-31 16:54:40 · 1265 阅读 · 2 评论 -
如何在csdn上打出n的m次方
如何在csdn上打出n的m次方nm不要这样打:n ^ m ^。不能打空格。原创 2020-08-01 15:55:41 · 538 阅读 · 10 评论 -
如何在笔记本电脑上打出特殊符号?(针对win10版本)
如何在笔记本电脑上打出特殊符号?(针对win10版本)本文为作者````````````````````(又名keven_11)原创,作者不允许此文章被转载,如果此文章对你有帮助,请点赞,无帮助,可在评论区留言,谢谢。现在在工作和学习中,用特殊符号是“家常便饭”(请原谅我这么说)。若你的电脑键盘右边有数字之类的键(不是上面),可看https://blog.csdn.net/qq_41170620/article/details/89703663?ops_request_misc=%257B%252原创 2020-08-02 16:43:20 · 3488 阅读 · 1 评论 -
C++笔记:设置域宽setw();
C++设置域宽、单、双精度浮点型数据类型、求余运算如果你想存储如果想将输出的“你好”前空1个空格,很简单:cout<<" 你好"<<endl;但如果题目要求你在“你好”前空100个空格勒?#include<iostream>#include<iomanip>using namespace std;int main(){ return 0;}...原创 2020-07-25 17:41:36 · 2587 阅读 · 0 评论 -
C++笔记:二进制枚举子集 and 位运算 技巧
C++笔记:二进制枚举子集的技巧关于二进制枚举子集,读者可见https://www.jisuanke.com/course/8387/438021,这里就直接讲二进制枚举子集技巧。一:多数二进制枚举子集题代码框架:#include <iostream>using namespace std;int main() { int n, x, ans = 0, a[30]; cin >> n >> x; for (int i = 0; i &l原创 2020-08-01 15:47:36 · 778 阅读 · 2 评论 -
计蒜客lca批注
#include<bits/stdc++.h>using namespace std;const int NOIP=1e5+5;int n,q,p[NOIP],eid;void init(){ memset(p,-1,sizeof(p));//初始化 }struct Edge{ int v,next;}e[NOIP];void insert(int u,int v){ e[eid].v=v; e[eid].next=p[u]; p[u]=eid++;}//链式前向星.原创 2020-08-24 16:15:12 · 238 阅读 · 1 评论 -
什么是命令提示符、打开命令提示符、命令提示符打开浏览器某网站等操作
什么是命令提示符、打开命令提示符、命令提示符打开浏览器等操作小编注:若有写错,大佬勿喷,可在评论中提出意见先说命令提示符是什么,百度说:命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。谢谢百度!0.如何打开命令提示符(这里说Windows10版本):1.命令提示符打开浏览原创 2020-07-26 19:07:25 · 17701 阅读 · 27 评论 -
C++笔记:队列queue、优先队列priority_queue、双端队列deque
NO.1 队列一.什么是队列队列与栈、动态数组等一样,是一种线性数据结构,规则为:先加入的元素先被删除,即“先进先出”,与栈恰好相反。队列只能在队尾添加元素,在队头删除元素。二.队列的一些概念队头:队列允许删除操作的那一头。 队尾:队列允许插入操作的那一头。 入队:队列的插入操作。 出队:队列的删除操作。 下面是图例: 三.C++STL里面的队列(已下称 queue )操作#include<queue> //用队列要调用的头文件queue<int>原创 2020-08-07 17:34:01 · 891 阅读 · 1 评论