自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小学生蒟蒻

四年级童鞋

  • 博客(197)
  • 资源 (3)
  • 问答 (5)
  • 收藏
  • 关注

原创 【c++提高1】树状数组

1.树状数组简述2.树状数组的思想3.基础问题的扩展:树状数组求任意区间4.树状数组代码实现。

2023-02-07 19:30:24 659 1

原创 【c++提高1】二叉树&二叉堆(万字总结)

二叉树是N个节点的有限集合(N是自然数),当N=0时,那么就是一个空集合(叫空二叉树)。总的来讲(N>0的情况),二叉树就是由一个根节点和两棵子树组成的。然而,从名字就可以看出来,二叉树的每一个节点最多都只有两棵子树(分别称为左子树和右子树)二叉堆使用完全二叉树实现,分为大根堆和小根堆两种:大根堆:任意一个分支结点的值都大于或者等于其子节点的值。小根堆:任意一个分支结点的值都小于或者等于其子节点的值。

2022-12-20 21:57:16 798 3

原创 c++game大全

本人在acwing顺便看看csdn上有没有acwing的update8.2318:12完成贴update8.2322:48更新windows.h专题update8.2414:37更新了小游戏专题4篇update8.2610:08。

2022-11-05 11:12:36 7288 2

原创 【c++提高1】数据结构之分块(预处理+暴力)

1.分块思想2.分块实现操作。

2022-09-06 21:11:22 520 4

原创 【c++提高1】数据结构之哈希表

1.哈希表存储方式2.哈希表应用:散射表3.哈希表变形:字符串哈希4.例题。

2022-09-06 13:30:46 609 9

原创 【c++提高1】最大流(超详细图解)

流网络G(V, E)是一个有向图,图中每条边(u, v)∈E都有一个非负权值c(u, v) ,称为边的容量。并且,如果边集E包含一条边(u, v),则图中不存在反方向的边(v, u)。如果(u, v)∉ E,则c(u, v) = 0。在流网络的所有节点中,有两个特殊节点:源点S和汇点T。流网络示例:设G(V, E)是一个流网络,其容量函数为c,设S为网络的源点,T为网络的汇点。

2022-08-24 20:28:24 3992 2

原创 【c++提高1】数据结构之单调栈

单调栈是栈的一种特殊的形式,必须要求栈内元素单调,当题目有单调性的话(不是答案具有单调性,是信息具有单调性),一般可以使用单调栈,避免重复执行不必要的操作,从而将时间复杂度降低。单调栈没有什么特定的算法,也没有啥模板,所以就不讲太多关于单调栈算法一类的东西了就将一些例题吧。

2022-08-23 16:52:36 918 3

原创 【c++提高1】迭代加深搜索&双向搜索

迭代加深搜索:首先深度优先搜索d层,若没有找到可行解,再深度优先搜索d+1层,以此类推,直到找到可行解为止。① 首先搜索A部分的礼物,将搜索出的重量在[0, w]之间的所有值保存为数组X,并排序去重。② 接着搜索B部分的礼物,对于搜索出的每个...

2022-08-18 23:00:49 458

原创 【c++提高1】拓扑排序

大纲大纲1.引入2.Kahn算法3.DFS求拓扑排序4.例题1.引入:对于一个有向无环(V,E)来说,其拓扑排序是G中所有顶点的一种线性次序,该次序满足如下条件:如果图G包含边(u,v) ,则节点u在拓扑排序中处于v的前面(如果图G包含环路,则不可能排出一个线性次序)。注意:拓扑排序不是唯一的。2.Kahn算法算法思想:每次找到一个入度为0的顶点,删除该顶点及其所有的出弧。【Kahn判断环】通过Kahn算法判断图中是否有环。......

2022-08-17 11:32:01 410

原创 【c++提高1】STL超详细讲解

一、基础STL二、STL的迭代器遍历三、for(auto it:S)遍历STL四、STL函数。

2022-08-16 10:32:47 1153 8

原创 【c++提高1】A star

A st。

2022-08-15 18:23:22 176

原创 【c++提高1】最近共先祖LCA优化求法

1.树上倍增&欧拉序+RMQ2.Tarjan3.例题。

2022-08-15 18:06:22 985 3

原创 【c++提高1】图

深度优先遍历从G中任选一个未遍历过的顶点u出发,访问此顶点,然后依次从u的未被访问的邻接点出发,深度优先遍历图,直至图中所有和u有路径相通的顶点都被访问到。非网图中两顶点s,t之间的最短路径问题,我们只需要从顶点s出发,对图作广度优先搜索(BFS),利用BFS层层访问,由近及远的特点,一旦遇到顶点t就终止。图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。树固定从根节点开始遍历,图的开始顶点不固定。...

2022-07-22 20:38:21 618

原创 【c++提高1】树

🔑引入Q:小Z的堂兄弟和小科拥有同一个爷爷(双亲的双亲),不同的父亲(双亲结点)。使用双亲表示法,记录下每个人的双亲。枚举所有节点,如果其和小Z的双亲的双亲是同一人,且双亲不是同一人,那么他是小科的堂兄弟。注意:树中堂兄的定义是,双亲在同一层(不是同一结点)的结点互为堂兄弟。代码:树(Tree)是n(n ≥ 0)个结点的有限集。 n == 0时称为空树。在任意一棵非空树中:树中的元素称为:结点。有且仅有一个称为根(Root)的结点,如图中的A结点。当n > 1时,根以外的结点可分为m(m.

2022-07-13 12:59:59 878 1

原创 【c++提高1】优化DP专题:状压DP & 倍增优化DP & 环形DP的单调队列优化DP

这是c++提高的第一讲动态规划是解决“多阶段决策最优化问题”的一种算法思想。阶段的划分决定了状态的定义,状态定义的一个重要特性就是要确保**“无后效性”。**很多DP问题在定义状态的时候,为了确保无后效性,需要在状态中加入多个维度,如果每个维度都用一维数组来表示的话,当维度较多时会导致占用的空间太大。很多时候状态的维度虽然很多,但是决策非常少,特别的很多时候只有两种决策。例如背包问题中每个物品只有0和1两种决策。对于这种情况,没有必要为每个维度都分配一维空间,而是用一个二进制数来存储所有维度,每个二进制

2022-07-11 12:07:29 908 1

原创 【c++入门(2)】并查集

并查集(Union Find Set):是一种用于处理分离集合的抽象数据类型。主要包含2种操作:查询(Find):给定一个x,判断x属于哪个集合。合并(Union):给定x和y,讲x所在的集合与y所在的集合合并。在顺序表实现中,使用数组记录每个元素所属的集合代表。A[i] = j,表示元素i所属集合的代表为j① 初始化:make-set(x):设置A[x] = x,N个元素的时间复杂度O(N)。② 查找:find(x):返回A[x]的值,时间复杂度O(1)。③ 合并:union(y, x):如果x

2022-07-05 13:10:43 1256

原创 【c++入门(2)】完全背包

一、完全背包题目描述:题目描述有个背包可承受重量T,现有N件物品,每件物品重量为Wi,价值为Vi ,每件物品的数量是无穷的,这个背包可以装载物品的最大价值是多少?输入格式第一行,两个整数,分别表示T和N,用空格隔开(T≤1000,N≤100)接下来T行,每行两个整数,分别表示N件物品的重量Wi和价值Vi(1≤Wi,Vi≤100)输出格式一行,表示这个背包可以装载物品的最大价值输入输出样列输入样例1:100 577 9222 2229 8750 46...

2022-05-22 21:35:36 3964 1

原创 【c++入门(2)】队列和queue

1.队列将队列我们先看一看线性结构:【定义】线性结构中的数据元素之间是一对一的关系。举个例子:定义:【特点】存在唯一的一个被称为“第一个”的数据元素存在唯一的一个被称为“最后一个”的数据元素除第一个之外,每个数据元素都只有一个前驱除最后一个之外,每个数据元素都只有一个后继说完了线性结构,再来看队列:【定义】队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First InFirst Out)的线性表,简称FIFO,最早进入队列的元素最早离开。允许插

2022-04-12 21:29:25 2184

原创 【c++入门(2)】 二分2-----二分上下界

haluo,我们继续学习…上节课我们学了怎样在数组中查找一个数,我们样的方法是对半分。前提条件是是在一个 递增 的数组里进行查询。我再问一下,递增序列和非降序序列有什么区别?我写两个数组你就知道了。递增:1 4 5 7 56 74 88 199非降序:1 1 1 2 3 3 4 7 7 16 29 29通过两个数组我们可以总结出来几个特点:递增:①无重复②每一个数都比前面一个数大非降序:①有可能有重复②整体趋势向上涨(详细情况见数组)在问一个问题,如果在一个非降序序列中查找x。

2022-01-20 16:02:28 771

原创 山寨版归并【上】

题目:题目描述问题描述可可和乐乐手头有很多游戏卡片,卡片上都有数字编号,他们各自将他们的卡片按照由小到大顺序排序,现在他们想将他们的卡片放到一起,并且还要保证是由小到大排序。由于卡片数目可能达到数百万张,而且要在一秒钟时间完成卡片的合并,现在请你帮忙!输入格式共三行。第一行:空格分隔的两个整数n和m,分别表示可可和乐乐的卡片数;第二行:n个用空格分隔的整数,表示可可卡片从小到大的编号;第三行:m个用空格分隔的整数,表示乐乐卡片从小到大的编号;输出格式仅一行:n+m个整数,以空格分隔,表示

2022-01-19 20:30:49 2635

原创 基础贪心总结

/* 基础贪心 - - 核心部分 *//*bool cmp ( const Wvs &x, const Wvs &y ){return x.v>y.v ;}for( int i = 1 ;i <= n; i++ ){cin >> wvs[i].w >> wvs[i].v ;wvs[i].v /= wvs[i].w;}sort

2021-12-13 13:33:11 544

原创 【c++】NOIP 2013普及组 第二题:表达式求值

题目描述给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。保证表达式合法。输入一行,一个表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0到2^31-1之间的整数。输入数据保证这一行只有0~9、+、*这12种字符。输出一个整数,表示这个表达式的值。注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。输入样例1样例输入1+1*3+4样例输出8提示(NOIP2013junior...

2021-10-17 20:42:09 4402 4

原创 【c++入门(2)】区间贪心

文档:大纲1.不相交区间2.区间选点1.不相交区间问题 贪心要素贪心选择性质:问题的整体最优解可以通过一系列局部的最优选择得到。最优子结构:当问题的最优解包含其子问题的最优解时称该问题具有最优子结构性质。对贪心选择的证明,就是在证明贪心选择获得的局部最优解是全局最优解的一部分。问题描述:给定????个半开区间 [???? ???? , ???? ???? ),选择尽量多个区间,使得这些区间两两没有公共点。示例:N = 3,区间分别为:[1, 5), [2, 4)

2021-10-14 13:02:35 418

原创 【c++入门(2)】线性DP

大家好我们又见面了,这是c++入门2的第一课,话不多说,我们继续学习。大纲1.最大连续子段和问题2.数字三角形问题3.练习1.最大连续子段和问题连续子段{3} 子段和是 3对于上面的序列连续子段有:【问题描述】 给定n个整数(可正可负)组成的序列a1,a2,…,an,求该序列的最大的连续子段和。如果所有整数都是负 数,那么定义其最大子段和为0.连续{3,-4} 子段和是-1连续{3,-4,2} 子段和是1连续{3,-4,2,10} 子段和是11连续{-4} 子段和

2021-10-12 13:19:36 2316

原创 c++入门2开启啦

c++入门1已经上完啦!接下来是c++入门2的时间了,我们不见不散!!

2021-10-12 12:54:32 93

原创 23【c++入门】基础贪心1

大家好,我们又见面了。我们继续学习c++大纲1.引入2.最优装载3.部分背包4.案例练习1.引入最优路径问题描述:从下面的交通图中,找到一条最便宜的从合肥到北京的方式。① 最优化问题。 ② 经过一系列步骤。③ 每一步都做出当前最佳选择。 ④ 局部最优解最终能得到全局最优解。2.最优装载贪心算法:求解最优化问题的算法通常需要经过一系列的步骤,在每个步骤都面临多种选择。贪心算法是这样一种算法,它在每一步都做出当时看起来最佳的选择,也就是说它总...

2021-08-30 14:02:38 213 5

原创 22【c++入门】枚举

大纲1.引入2.枚举算法3.案例练习1.引入求满足表达式A + B = C的所有整数解,A、B、C为1~5之间的整数。算法思路:① 枚举变量A、B、C的所有可能取值。② 对每种取值情况判断是否满足表达式:A + B = C。2.枚举算法枚举:所谓枚举法,指的是将所有 可能的情况一 一列举,用题目给定的检验条件 判定列举出的情况是否满足条件,满足条件的即为答案。上题解题过程:① 首先,定义问题所有可能的解(问题的解空间);② 抽象出解包含的元素,确定.

2021-08-28 15:57:10 465 1

原创 21 【c++入门】结构体

大纲1.引入2.结构体3.结构体排序4.练习1.引入【成绩查询】问题描述:xx小学上周举行了期中考试,现在期中考试成绩出来了,六(1)班的班主任老师统计了所有学生的语文、数学和英语成绩,六一班有N名学生,老师会把他们的学号和成绩都给你,他希望你能为他编写一个程序,可以根据学生的学号来查询他们的语数英的成绩。输入格式:第1行:一个整数,代表六一班的学生人数n(1 ≤ n ≤ 100)接下来N行:每行4个数据,分别代表学生的学号和语数英三门课的成绩(1 ≤ 学号 ≤.

2021-08-28 10:36:48 666 1

原创 16【c++入门】sort排序

大家好我们又见面了,我们继续学习c++大纲1.认识sort及sort的 |起始地址| 与 |结束地址|2.反序3.代码4.实例1.认识sort及sort的 |起始地址| 与 |结束地址|格式:A代表数组的名称起始下标表示要排序的首个元素在数组中的存储下标默认是从小到大排序的2.反序但是如果题目中让我们反序该怎么办呢我们在前几节课学习了子程序我们现在可以写一个反序的子程序首先,如果数是整数,那么定义成int,...

2021-08-21 13:19:03 1305 3

原创 15【c++入门】数字标记

哈喽,大家好!今天的内容是数字标记!引入????:题目描述教室里有n盏灯,编号从1到n,全是熄灭的,第1个学生进来的时候会把所有灯都打开,第2个学生会把编号为2的倍数的灯做相反处理,接着第3个同学进来,会把所有3的倍数的灯再做相反的处理,以此类推,当第m个学生进入教室操作完成以后,还有哪些灯是开着的。输出开着的灯的编号,一行一个。(1<=m<=n <=1000 )输入格式一行,用空格隔开的两个正整数n和m输出格式顺次输出开着的灯的编号(每个编号占一行)。呵

2021-08-19 15:48:50 918 2

原创 7 【c++入门】for循环的认识

呵呵呵,欢迎欢迎啊今天是小明爸的生日,小明要为爸爸在程序上写300个爸爸生日快乐于是他是这么写的保证准确300个 cout#include<iostream>using namespace std;int main(){ cout<<"爸爸生日快乐!"<<endl; cout<<"爸爸生日快乐!"<<endl; cout<<"爸爸生日快乐!"<<endl; cout<<"爸爸

2021-08-15 23:19:52 351 6

原创 2【c++入门】桶排序精讲2--排序

大家好,又见面了1.回顾2.排序讲解3.代码1.回顾我们简单回顾一下上次的内容1.归类(插旗子类型) 归类是将输入的每一个数,加入相应的cnt里进行计数首先定义一个存放计数的cnt数组int cnt[数组长度];//数组长度自己定接下来我们定义一个数字个数,和一个变量来接收每一个输入的数int n,x;接下来读取个数cin>>n;知道了个数,我们可以开始输入每一个数字了for(int i=1;i<=n;i++){ cin>>x;

2021-08-11 22:06:15 199 5

原创 【atcoder】abc312~abc321题解

把信息存进去然后找就行。

2023-09-28 17:04:15 1843

原创 【atcoder】abc302 ~ abc311题解

枚举A里选的,那么需要找到最大的满足和Ai​的差不超过D的Bj​,显然可以用二分实现。

2023-09-28 17:02:24 1740

原创 【c++提高1】根号分治

来讲一个不常用(不是)但是有用的算法吧。

2023-07-10 14:34:34 1660

原创 高精度开根号

引入:如果相对一个大数开根号(取整)怎么办呢?这个东西,至于开平方就直接高精乘了。做大的满足其平方

2023-07-08 16:29:41 432

原创 atcoder abc297A-E

题意简述:at老友(不说名字了)在弄电脑,一共点击了n次鼠标,当相邻两次点击的时间间隔不超过d时会出发双击,问第一次双击是在什么时候,如果没有输出-1思路:简单题好吧,从1for到n判断a[i]和a[i+1]的间隔时间是否不超过d,若果是就输出一下maxmaxminminforintint;<=int;>=int;--<<<<<<<<;minmax;

2023-04-14 13:38:30 745

原创 【2023包河区】题解

今天早上也是打完了包河区,不得不说是太了所以说,还是水一篇文章吧。

2023-03-11 15:49:07 666

原创 usaco铜组【2023.1月赛】

1.29,第一次打usaco,成功晋级。

2023-02-04 17:55:43 652 4

原创 atcoder11-16日刷题总结

4.abc270-D 设f_i表示剩下i颗石头时Takahashi可以获得的最大石子数,那么如果我们这次拿走了a_j颗石子,然后对方最多获得f_i-aj颗石子,剩下的i-f_(i-a_j)颗石子就是Takahashi的了。第一次是二分目标点x的位置,对于中点mid,如果矩阵[(1,1),(mid,n)]的棋子数量等于mid,那么就是l移动,否则就是移动r。二分一个x,表示对于每一个篮子i,都拿出min(ai,x)个苹果的情况,显然我们需要的答案时最大的x。注意:存的时候不能把>n的存了,否则会re。

2023-01-17 21:18:47 745

基础背包问题,代码+分析+注释

讲了基础的01、分组、多重、完全背包。

2022-05-26

13个c++小游戏 感兴趣的可以看看

13个小游戏,用于c++,字数比较多,所以打开的时候会有点慢。本来想是发成文章的,但是文章显示字数过多,所以我就发成了资源,免费

2022-01-27

俄罗斯方块超好玩版.cpp

#include #include #include #include #include #include using namespace std; int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } }; int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } }; int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } }; int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } }; int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } }; int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } }; int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } }; int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } }; int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } }; int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } }; int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } }; int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } }; int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } }; int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } }; int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } }; int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } }; int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } }; int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } }; int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } }; void initialWindow(HANDLE hOut);//初始化窗口 void initialPrint(HANDLE hOut);//初始化界面 void gotoXY(HANDLE hOut, int x, int y);//移动光标 void roundBlock(HANDLE hOut, int block[4][4]);//随机生成方块并打印到下一个方块位置 bool collisionDetection(int block[4][4], int map[21][12], int x, int y);//检测碰撞 void printBlock(HANDLE hOut, int block[4][4], int x, int y);//打印方块 void clearBlock(HANDLE hOut, int block[4][4], int x, int y);//消除方块 void myLeft(HANDLE hOut, int block[4][4], int map[21][12],

2021-08-01

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

TA关注的人

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