自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

这题采用贪心思想,找到最小的两种果子进行合并,不断重复,直至只剩下一种果子。但这种方法效率比较低,两层for循环,所以比较慢。

2024-11-26 15:52:40 380

原创 最小生成树——Prim和Kruskal算法

这个算法和Prim用法是一致的,但是得到的方式却大不相同,Prim是找任意一个结点连着的最小的边,从而不断更新到达各个结点的最小花费。时间复杂度是:O(n*n),更适合稠密图;而Kruskal算法是找到最小的边,看这条边的两点结点是否在相同的集合,如果是,说明形成回路,如果不是,及时更新两结点所在的集合,直至所有集合都是1。时间复杂度:O(eloge),更适合稀疏图。

2024-11-25 21:13:09 314

原创 牛客周赛 Round 69 C-E

一、题目描述:一看这个题目是不是觉得是物理问题,我也觉得是这样的,全反射我都快忘记了,结果发现他居然还能这样看,请看图片:第一种情况:当目标点在小歪所在平面的上面得到的反射方向(3,3,8),这个8=(h-z)*2+z得到的第二种情况:当目标点在小歪所在平面的下面得到的反射方向(3,3,12),这个12=(h-z)*2+z得到的。注意他说了得约分,得到约分后的结果———>于是你还要对他们求最大公约数。

2024-11-25 17:16:00 1210

原创 Djskstra算法

将所有dist[i] (源点到各个点之间的距离的描述)都设置成map[u][i],如果源点到i点有权值,说明是通路,就把u设置成i的前驱,否则,将前驱设置成-1。在(2)中已经找到了离的最近的点,那么我判断非S集合的点是否能够通过最近的点来走捷径,如果可以就依次进行更新dist数组,同时更新前驱p数组。其实dijkstra算法采用的贪心策略是选择特殊路径长度最短的路径。(4)判断是否要结束。即找的最近点没有改变,是初始化指向的源点。(6)最后进行输出打印,用栈先进后出的性质来输出路径。

2024-11-21 21:52:46 239

原创 D. Kousuke‘s Assignment

下面我讲一下最妙的地方:就是他用了map作为哈希表,当我得到一个新的前缀和的时候,我现在map中判断,有没有出现过,如果出现过,并且它的索引>=我的上一个最美子区间的位置,这就说明我找到了一个新的子区间,cnt++,一旦等于的话,其实是我的特殊情况,就是我在最开始就把0给塞进去,map[0]=-1,我的index也是初始化为-1,这个时候当我第一个数为0,是出现了相等的情况,你们可以好好捋一下,我一开始也是有点不理解,后面就是一整个恍然大悟.

2024-11-20 20:05:45 170

原创 牛客周赛 Round 68

我看的题解的思路就是,先统计没有改变任何数之前,数组中有多少个元素能够和别的元素配对组成495的倍数,配对的方法:用两个指针,第一个指针i指向1-495,第二个指针j指向i-495,如果i和j存在,且乘积是495的倍数,分两种情况,当i和j相等时,个数其实是。然后再进行一个for循环,一个一个进行判断,元素+1之后会有几个数组中的元素的个数符合条件,如果比最开始的大,更新,恢复现场,再进行判断下一个........有点想复杂了,但实际上我看的其他大佬写的,真的很巧妙qwq,请看vcr。

2024-11-18 17:25:48 282

原创 详解set和multiset容器

set,是一个内部自动有序且不含重复元素的容器。

2024-11-16 22:05:07 1364

原创 详解map与multimap容器

map中所有元素都是pair:pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)① map容器默认排序规则为按照key值进行从小到大排序,利用仿函数,可以改变排序规则。map、multimap属于关联式容器,底层结构是二叉树实现的。③ 对于自定义数据类型,map必须要指定排序规则,同set容器。multimap允许容器中有重复key值元素。② 利用仿函数可以指定map容器的排序规则。map不允许容器中有重复key值元素。(5)判断map容器是否为空的函数。

2024-11-16 19:11:04 694

原创 详解模版类pair

pair是一个模版类,可以存储两个值的键值对.first以及.second。常见用途:1️⃣用于需要返回两个值的函数;2️⃣用于容器的元素,如std::map,std::set;pair包含在头文件#include if(a.first!i++){

2024-11-16 01:52:44 545

原创 详解vector容器

本质上vector是一个可以动态扩展的数组。他有一个别称:单端数组。(1)vector与数组的区别数组是静态空间的,vector容器是支持动态扩展的。(2)vector误区但我们在对vector进行动态规划的时候,可能就觉得是在原本的内存空间后面加上新的内存空间,但实际上不是的,而是找到一个内存空间更大的地方,把原来的数据拷贝进去,原来的内存空间将被清空。(3)vector迭代器vector迭代器是支持随机访问的迭代器。

2024-11-15 18:21:59 1619

原创 最全最简单理解迭代器

迭代器变量定义使用iterator关键字,形式为:容器:——iteaator 变量名(如:std::vector::iterator a、vector::iterator a、auto a)。

2024-11-13 22:29:24 1575

原创 牛客小白月赛104——D.小红开锁

说明:对内层操作2次,对外层操作1次即可开锁。

2024-11-10 18:59:40 301

原创 Codeforces——B. Medians

给你一个数组 a=「1,2,...,n ,其中 n是多,还有一个整数 k。你的任务是选择一个多的正整数 m 并将 a 分割成 m 个子数组 十。b1,b2,...,bm 这样·数组 a 中的每个元素正好属于一个子数组。·对于所有的 1<i<m ,b;都是**个奇数,即每个子数组的长度都是奇数。。median(median(b1),median(b2),...,median(bm))=k,即所有子数组的中位数数组的中位数#必须等于 k。median(c)表示数组 c 的中位数。

2024-11-09 17:37:09 470

原创 牛客小白月赛104 —— C.小红打怪

C.小红打怪。

2024-11-09 17:13:38 745

原创 最大公约数,最小公倍数以及同余原理

以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。

2024-11-09 10:56:24 898

原创 位运算实现N皇后问题

要在n*n的格子上放下n个皇后,要求皇后的同一行,同一列,以及对角线不能有皇后。解决n皇后问题的时间复杂度是O(n!),好的方法可以大量剪枝,大量优化常数时间。

2024-11-08 18:32:35 263

原创 牛客周赛 Round 66 —— D.小苯的蓄水池(easy)

【代码】牛客周赛 Round 66 —— D.小苯的蓄水池(easy)

2024-11-04 19:29:01 221

原创 A. Meximum Array

【代码】A. Meximum Array。

2024-11-02 18:54:19 131

原创 牛客周赛 Round 65——F-降温

输入输出2 1说明。

2024-10-28 19:02:52 299

原创 牛客周赛 Round 65 ——D-医生

运用二进制的存储方式病人的身体状况,药材的治疗功效,利用二进制来枚举所有2^k方式——要不要取药材(!非常巧妙-我没想到呜呜)代码上面有注释,我感觉还是比较详细的。看懂的话点个小赞支持一下我吧嘻嘻嘻。

2024-10-28 15:59:21 216

原创 B. Buying Lemonade

其实这两种方法本质上思路都差不多,方式不同。

2024-10-25 15:43:47 552

原创 最大连续子序列

因为平方数目的子序列数是可能的,要得到一个线性上限的唯一方法就是找出一个聪明的方法来排除对很多子序列的考虑,而不用真正地计算所有的这些子序列的和。如果一个子序列的和是负的,则它不可能是最大连续子序列的开始部分,因为可以通过不包含它来得到一个更大的连续子序列。如{-2,11,-4,13,-5,2的最大子序列不可能从-2开始,{1,-3,4,-2,-1,6}的最大子序列不可能包含{1,-3}。如{1,-3,4,-2,-1,6},当检测序列{1,-3}后,发现是负值,则表示该子序列不可能包含在最大子序列中。

2024-10-14 20:41:47 784

原创 我们N个真是太厉害了

我们会发现,如果我们把我们想要找的最小的得不到的那个数,如果存在则说明他是通过怎么相加都得不到,就意味着如果我们使用叠加的思想,会发现我们想要加的(排完序的数组)那个数一定是是大于前面数之和的,这就说明他不可能得到了,无论怎么相加,都得不到了们都会比他大,因为数组中一定有1,则说明先将他初始化为1.举个实例:就比如a,b,c ,d(已排序)当a=1,b>2就无法得到所需要的数组,会发现s==1+1==2当b=1时,c>3就无法得到所需要的数组,会发现s==1+1+1==3。

2024-10-13 17:43:16 203 1

原创 牛客网--数学考试

找到两个长度为k的字串,要求两个子串不重叠,但可以相邻,且这两个子串的和必须是最大的。

2024-10-13 17:20:38 165

原创 牛客网--连点成线

第一种方法:定义四个数组,分别记录点(x,y),当取x时,更新对应y的最小值和最大值,当取y时,更新对应x最小值和最大值,于是有每输入一个坐标点,就更新最大值mm的最大值,当x相等的时候,两点的y值之差的最大值,当y相等的时候,两点的x值之差的最大值。

2024-10-13 16:55:55 151

原创 质因数分解

这个题主要思想是理解n是由两个质数相乘得到的,质数本身的定义就是只有两个因子:1和它本身,假设你由a*b得到,a,b是质数,则由此得到n的因子只可能是1*1,a*b,a*1,b*1,于是只需要i从1到n枚举,看n%i==0,如果成立,则说明说明i是该数的因子,那么n/i将会是最大的那个因子,于是得到了,但是如果想从n开始枚举就会过不了,时间太长了!

2024-10-13 16:46:17 202

原创 Acwing-P1049 大盗阿福

这道题思路比较简单,看懂这句话你也就会了:如果最后一家店还能洗劫,而且不惊动警察,那么一定要去洗劫。

2024-05-30 20:44:33 121

原创 最全dp做法(循序渐进)

题目:洛谷P1216。

2024-05-29 01:11:24 776

原创 创建哈夫曼树(huffmantree)以及得到哈夫曼编码

代码里有注释,有前面线性表的基础,哈夫曼还是可以完成的。

2024-05-20 00:37:58 184

原创 循环双链表

【代码】循环双链表。

2024-05-09 13:03:39 352 1

原创 循环单链表的实现代码

【代码】双向链表的实现代码。

2024-05-09 12:58:21 272 1

原创 双向链表的基本操作

【代码】双向链表的基本操作。

2024-05-08 16:50:36 488 1

原创 静态链表——例2-3

【代码】静态链表——例2-3。

2024-05-07 13:59:24 274

原创 静态链表的创建,插入,删除操作

【代码】静态链表的创建,插入,删除操作。

2024-05-06 18:10:35 280

原创 单链表的合并

将单链表La和Lb合并到Lc上。

2024-04-29 11:21:33 491

原创 单链表的插入和删除操作

【代码】单链表的插入和删除操作。

2024-04-29 10:45:07 248

原创 用单链表表示线性表(头插法,尾插法)

【代码】用单链表表示线性表(头插法,尾插法)

2024-04-29 10:40:51 116

原创 顺序表的合并

将La和Lb合并到Lc上。

2024-04-29 10:37:40 110

原创 顺序表的建立,插入,删除等操作

【代码】顺序表的建立,插入,删除等操作。

2024-04-29 10:33:24 145

空空如也

空空如也

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

TA关注的人

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