自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基本算法--蓝桥杯备考(二)

贪心就是把问题分为多个步骤,每个步骤都选择当前的最优方案,每一步都不考虑对下步的影响,在后续的步骤中也不能回头改变前面的选择。例如在背包问题中贪心算法就很实用,有一堆价值不同的物品且每件物品是可以分割的,每次只放当前最贵的物品,背包放满后一定是价值最高的。因为贪心算法每个步骤都是局部最优解,所以计算量很小,与此相反暴力算法是计算复杂度最差的,因为他考虑到了所有的情况。用贪心不一定能得到最优解,但是他算法简单并且效率高,所以可以用来骗分。

2025-07-27 14:16:23 504 1

原创 最大团--贪心例题

这是一个图论(可能是,主播还没学,瞎说的)和贪心的结合体,整个题的核心在于这个公式,首先我们先假设按x值进行了排序(之所以在代码中没有体现,是因为在这里排好序之后后面的sort函数会再次进行排序,这次的排序的意义就会消失,所以只是假设就可以,不影响最终结果),得出xj>=xi.然后我们进行合并同类项,得出xj-wj>=xi+wi根据这个我们来推导三个点x1<=x2<=x3的关系。若x1和x2有边,则应有x2-w2>=x1+w1;若x2和x3有边,则应有x3-w3>=x2+w2;

2025-07-24 20:09:11 337

原创 购物--贪心例题

设已经组合出1-s的值,,即已经得到1,2,3,4,。。。,s,下一步扩展到s+1。当然如果能顺便扩展到s+2,s+3,...,s+v则更好,扩展的越大越好,这样就能用尽量少的面值扩展出更大的数。只要增加一个最大的 <=当前已经扩展到的值 的数v,就可以保证这些所选的硬币可以扩展到S+V的数。

2025-07-20 19:21:15 197

原创 买二赠一--贪心例题

在一个有序序列上进行二分查找,返回值下个第一个大于等于x元素的位置。如果不存在这样的元素,则返回尾迭代器。只要在这个基础上减一,就会得到小于等于x的数。不过需要注意的是他返回的是迭代器(是在整体内存上的地址),我们还需要将它转化为数组下标,只需要在迭代器的基础上减去数组的首地址即可。

2025-07-20 14:58:18 230

原创 关于vector中的erase的强调

我们来看一串代码,这串代码利用erase函数删除了数值为3的元素,但是其实他的迭代器已经失效了(虽然从原理上来讲他之后的元素会往前移动一位),包括指向被删除元素及其之后元素的迭代器都。那么该如何避免这种情况呢,那就是利用erase的返回值,他会返回一个新的指向后面的元素的迭代器,我们可以利用这个来更新it值,具体如下。此时如果继续对it迭代器进行操作,会产生未定义行为。例如下面这串代码,会显示如下错误。

2025-07-17 18:51:58 333

原创 填充--贪心例题

一道简单的贪心算法,只需要考虑相邻的两个数就可以了,不过一定要小心数组越界问题,一旦越界访问,只能通过百分之八十的案例,笔者在此猜测可能是越界访问到的数据正好是‘?’,通过了if判断。

2025-07-17 13:52:35 166

原创 技能升级--二分例题

直接遍历每一种情况,选择攻击力最高的解法。

2025-07-14 19:07:25 483

原创 管道--二分例题

首先要明白一种贪心算法(区间覆盖问题),假设有一间长度为的走廊,我们有五块只能覆盖特定区域的地毯,分别为首先我们要进行排序将x值进行升序排序的同时,对y值进行降序排序,排序完就是首先设定初始坐标变量为首地址1,然后寻找x值也为1的区间为[1,4],然后找在1到4范围中的x值并且y值较大的数,则为[2,6]。按照此步骤最后可以完全覆盖地毯并且用料最少的方案是。

2025-07-10 16:13:10 291

原创 青蛙过河--二分例题

1.首先学会贪心算法,与其看成一只青蛙来回地走2x次,不如想成有2x只青蛙,每只青蛙只走一边,也就是求局部最优解。2.假设跳跃距离为y,则在所有石头内排列出所有可能出现的y,如果所有的y都大于等于2x,则可以通过。3.然后进行二分优化,需要二分的是青蛙的跳跃距离,最小值是1,最大值是n假设跳跃距离为2(需要进行三次y的判读)

2025-07-09 14:36:13 192

原创 求阶乘--二分例题

想要求一个数阶乘之后有几个零,首先构成10的数字只能是5和2,又因为在实际的阶乘运算中2的数量远远大于5,所以只需要计算这个数字阶乘的过程中一共产生了多少个5就可以计算末端有多少个0了。

2025-07-08 15:15:23 259

原创 棋盘--二维差分例题

什么是差分数组?差分数组是一种记录。

2025-07-03 15:16:28 450

原创 重新排序--一维差分例题

首先创建一个计数数组,作用是识别各个数被调用了多少次,然后对原数组和计数数组进行排序,然后将依次将计数数组中数量最多的和原数组中数值最大的相乘即可。

2025-07-01 18:54:27 220 3

原创 领地选择--前缀和例四

空间复杂度过高(1.1mb)

2025-06-30 19:58:22 755

原创 异或和之和--前缀和例题三

先计算单个元素所有可能的异或和加起来啊,最后再将所有元素的异或和加起来。(只能通过百分之五十的测试用例)注意:单个数据异或相当于他本身与0进行异或(又因为0和任何数异或都等于它本身)

2025-06-27 15:53:01 221 1

原创 可获得的最小取值--前缀和例一

题目:使用贪心与前缀和算法求解最优解问题 思路:贪心算法在特定情况下不适用,需要结合前缀和以空间换时间。对数组排序后,通过遍历所有可能的操作组合(操作一x次,操作二k-x次),利用前缀和快速计算最小值。 解法:排序数组后构建前缀和数组,然后遍历p从1到k,计算sum[n]-sum[n+p-k]+sum[2*p]的最小值。 注意:前缀和数组初始化时i从1开始,避免越界问题。

2025-06-26 15:53:32 330

原创 基本算法--蓝桥杯备考(一)前缀和,差分,二分

【代码】基本算法--蓝桥杯备考。

2025-06-25 16:51:25 315 4

原创 排序和排列——蓝桥杯备考

本次用下面的例题详解这十种排序算法将读入的 N 个数从小到大排序后输出。第一行为一个正整数 N。第二行包含 N 个空格隔开的正整数 ai​,为你需要进行排序的数。将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。输入输出样例54 2 4 5 11 2 4 4 5对于 20% 的数据,有 1≤N≤103;对于 100% 的数据,有 1≤N≤105,1≤ai​≤109。

2025-05-22 21:55:23 436

原创 数据结构基础--蓝桥杯备考

语法详情见STL-string容器。

2025-05-13 11:23:46 2208 2

原创 STL各类容器对比

2025-05-08 18:07:15 133

原创 STL常用算法——C++

方式一:传入普通函数(printf1)方式2:利用仿函数,传入匿名函数对象注意:函数只需要传入函数名就行,但是仿函数需要传入函数对象。for_each在实际开发中是最常用的一个算法,需要熟练掌握注意:转运之前,需要将目标对象用resize()也开辟相同的空间。注意:find的返回值是迭代器底层原理就是二分查找,二分查找需要提前排序好才能用,二分查找需要的算力少。如果是无序序列,结果未知总结:对于统计自定义数据类型的时候,需要配合重载operator==

2025-04-22 18:14:58 2312 4

原创 谓词——C++

其中中的myfind()是创建了一个匿名函数对象。

2025-04-18 10:51:57 220

原创 函数对象-C++

【代码】函数对象-C++

2025-04-17 20:25:12 448

原创 map容器/multimap容器

public:it!=v.end();it++)cout <<"键值:" << it->first << " 实值:" << it->second;

2025-04-17 17:23:26 371

原创 set容器/multiset容器

题目:将他们按照年龄降序排序public:int age;= v.end();it++)cout <<"名字:" << it->name << " 年龄:" << it->age;int main()person p1("刘", 28);person p2("关", 28);person p3("张", 26);person p4("赵", 21);return 0;

2025-04-17 10:23:23 687

原创 list容器

相较于数组,数组插入元素需要把插入位置的所有元素全部往后移,消耗过多的算力。而链表只需要标明指针域,就可以快速对任意位置进行快速的插入和删除。

2025-04-15 09:09:44 331

原创 queue容器

他是一种先进先出的数据结构,有两个出口。队尾只能进数据,队头只能出数据。只允许访问队头队尾的元素,也就是不允许随机访问。

2025-04-11 19:54:22 234

原创 vector与deque应用

【代码】vector与deque应用。

2025-04-11 19:19:40 187

原创 stack容器(栈容器)

stack是一种先进后出的数据结构,他只有一个接口。

2025-04-10 17:32:57 205

原创 deque容器

也叫双端数组,可以对头部进行插入和删除。

2025-04-09 17:26:20 189 1

原创 STL—vector容器

vector数据结构与数组非常相似,也成为单端数组。不同之处在于数组是静态空间,vector可以进行动态扩展。(动态扩展:并不是在原空间之后继续扩展,而是寻找更大的空间之后将原空间拷贝过去,并释放原空间)v.end:指向最后一个元素的下一个位置v.rend:指向第一个元素的前一个元素的位置v.begin:指向第一个元素的位置v.rbegin:指向倒数第一个元素的位置push.back():尾插pop.back():尾删注意:vector是支持随机访问的迭代器,即可以使用v.begin()+3;这种类型的代码

2025-04-02 17:09:59 773

原创 STL-string容器

这些构造函数没有可比性,灵活使用即可。

2025-03-27 19:45:51 544

原创 STL-C++

v.end();begin++)cout << "名字:" << begin->m_name << "年龄" << begin->m_age << endl;cout << "名字:" << (*begin).m_name << "年龄" << (*begin).m_age << endl;return 0;

2025-03-27 14:05:09 435

原创 类和对象-运算符重载-C++

赋值运算符。

2025-03-24 22:43:21 1850

原创 类和对象-友元-C++

友元可以让一些类外的函数或者类来访问一个类中的私有成员,关键字为friend。

2025-03-17 09:21:59 226

原创 模板-C++提高编程

建立一个通用类,类中的成员数据类型可以不具体指定,用一个虚拟的类型来代替。

2025-03-15 14:35:42 746

原创 类和对象-多态-C++

在多态中,通常父类中的虚函数是毫无意义的,主要都是来调用子类重写的内容,因此可以将虚函数改为纯虚函数。(当类中有了抽象函数,这个类也叫做抽象类)

2025-03-09 23:41:59 1011

原创 类和对象-继承-C++

3.底层原理virtual关键字其实让继承的由一个变量变为了继承一个指针。

2025-03-03 21:35:21 701

原创 类和对象-const修饰成员函数-C++

声明对象前加const。

2025-02-17 17:18:33 271

原创 类和对象—this指针—C++

C++提供特殊的指针让成员函数知道自己现在指向那个对象,。

2025-02-09 20:49:31 340

原创 类和对象—静态成员—C++

类内声明,类外初始化。否则会报错。

2025-02-08 18:23:15 696

空空如也

空空如也

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

TA关注的人

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