自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (洛谷:P3397)地毯—>二维差分标记

在n×n的格子上有m个地毯。给出这些地毯的信息,问每个点被多少个地毯覆盖。

2024-04-12 14:55:41 362

原创 (洛谷P34060):海底高铁—->差分数组,贪心思想

该铁路经过N个城市,每个城市都有一个站。不过,由于各个城市之间不能协调好,于是乘车每经过两个相邻的城市之间(方向不限),必须单独购买这一小段的车票。第i段铁路连接了城市i和城市i11≤iN。如果搭乘的比较远,需要购买多张车票。第i段铁路购买纸质单程票需要Ai​博艾元。虽然一些事情没有协调好,各段铁路公司也为了方便乘客,推出了 IC 卡。对于第i段铁路,需要花Ci​博艾元的工本费购买一张 IC 卡,然后乘坐这段铁路一次就只要扣Bi​Bi​Ai​元。

2024-04-12 10:53:33 1607 1

原创 (蓝桥OJ:3291)区间更新—->差分数组

/这里的a[i-1]就是diff[i-1]的前缀和。//输入一对n,m;while(cin>>n>>m)//只要有输入进n,m,就进入循环。while(m–)//注意这里只有区间修改操作是在while内的。//第四步 每个新的a[i]都等同于diff[i]的前缀和。//第二步 定义差分数组(说明差分数组和原数组的关系)//利用前缀和将差分数组 还原为 新的a[i]数组。//第五步 将还原的新的a[i]数组 遍历。

2024-04-11 19:37:43 315

原创 (蓝桥OJ:760)数的计算—>dfs深度优先搜索另解

i++)//枚举当前层数搜索的数。//作为临时数组,dfs搜索–>枚举当前层数搜索的数 会用到。//dfs参数为层数 从第二层开始搜索。//每次搜索结束都返回answer。int dfs(int depth)//按深度进行搜索。//默认输入的数为第一层。//带0的数不算做答案(如0136=136)//第一层已知 不用搜索。

2024-04-11 13:03:24 178

原创 (蓝桥OJ:760)数的计算—->dfs深度优先搜索

+i)//每层限定的搜索范围。//n为输入的某个具体的值。//void类型 不用返回什么。//什么时候不再向下搜索?//对于每个结点都向下搜索。//最开始就是把初值传入。//构造dfs深度优先搜索函数。

2024-04-10 21:26:02 314

原创 蓝桥OJ:3419小郑的蓝桥平衡串—>注意前缀和数组与字符数组下标对齐

/那么最后s数组和prefix数组下标都为1,不需要修改下标(s[i-1]==‘L’?//对于整个字符数组 设定prefix前缀和数组 设定时做判断 如果该字符是L设为1 否则-1。//strlen针对char类型 后续同样要修改下标为(s[i-1]==‘L’?//选择3 从字符数组的第一位开始输入 计算大小时也从第一个位置开始 第0位默认为空。//选择1:由于计算机中字符数组从0开始,而设定prefix数组下标从1开始。//那么后续需要修改下标为(s[i-1]==‘L’?//选择2:与选择1同理。

2024-04-10 20:50:53 469

原创 蓝桥OJ:3382区间次方和—->前缀和

2024-04-10 19:50:55 153

原创 (洛谷:P1157)组合的输出—->递归实现组合型枚举—->DFS剪枝,递归回溯,组合

##分析。

2024-03-23 21:06:15 259

原创 (AcWing:94)递归实现排列型枚举—->DFS(递归,回溯)

/状态数组,布尔类型:true表示已经选过这个数,false表示还没选这个数。//存的是答案,比如123,132,321(其实就是将最后的状态给填进数组)state[i])//如果(false):这个数没有被选过,那这个数就可选。void dfs(int x)//x表示当前枚举到了哪个位置。//一切归为最初模样(答案赋为0)++i)//先遍历各数。//把这个选了的数存进数组里。//void,什么都不返回。if(x>n)//什么时候递归结束。

2024-03-23 18:05:40 218 1

原创 AcWing:92递归实现指数型枚举—->DFS(递归,回溯)

2024-03-23 16:52:56 138 1

原创 (Acwing:821)跳台阶—->递推,递归

本题是斐波那契数列除去最开始的1,其他的都一样:1 2 3 5 8 13 21 34 ……类似于斐波那契数列:1 1 2 3 5 8 13 21 34。

2024-03-23 14:41:46 286 1

原创 (蓝桥OJ:1531)快递分拣—->map(理解key与value),vector(push_back)

map<int,int>插入元素是无法使用push_back的,因为它的value仅是一个int类型的值而并非容器,map使用insert插入(一对)map中count是记录key(key唯一)的值,count为1说明该key数量为1(key存在)/count为0说明该key数量为0(key不存在)for(auto city:citys)//由于容器中都是不重复的城市,遍历容器,再输出单号。mymap.count§)//如果在mymap中,该城市不存在,说明是第一次出现。//遍历输入,输进map。

2024-03-22 22:07:34 312 1

原创 (蓝桥OJ:1113)CLZ银行问题—->双端队列

/choice表示操作中的IN/OUT。对于操作语句“从左到右依次判断”,判断是头进/尾出,判断是VIP队列/NORMAL队列。队列:先进先出的插入删除模式,删除的一端是队头(先进去的先出去),插入的一端是队尾。//先定义队列再实现双端进出功能(这个可以想象为两条队列一正一反放置)cout<<V.front()<<endl;//将V队列中的头不断输出。//只有把头弹出来了,新的头才会更新。while(V.size())//队列为空循环结束。//这样就可以实现双端都可以进出。

2024-03-22 21:09:57 316 1

原创 (蓝桥OJ:741)合并果子—->贪心,优先队列,NOIP

优先队列(大根堆改为小根堆)—->使得top为最小的数—->(贪心思想)每次都合并最小的—->每次都让两个最小的数相加—->由于要持续比较,pop出当前最小值,所以相加得到的和要放回。//answer持续在记录,每次只加上最小的。++i)//遍历输入 输入进优先队列。while(pq.size()>=2)//每次相加都需要两个最小的数。//要求队列中至少有两个数,每次只要最小值弹出相加(贪心)//弹出后会更新新的top(最小值)//两个果子相加的结果放回。

2024-03-22 20:38:14 265 2

原创 蓝桥杯第十四届B组省赛真题:冶炼金属—->超详解

##反推法+公式法——>由题目给出的最终的符合所有用例的V(20<=V<=25),得出不同的B,可根据不同的B分析出符合各个用例的V(如下三种V的范围不同),最后根据公示推导得出符合各个用例的V与符合所有用例的V的关系式,然后用符号各个用例的V通过关系式来表示符合所有用例的V,最后可画图理解寻找最终V的界。###分析题目——>寻找每个用例的界——>求交集得出符合各个用例的界——>上界与下界即V的最大最小值。//(题目1<=B<=A<=1e9)

2024-03-22 20:11:03 208 1

原创 蓝桥OJ:2490小蓝的括号串—->栈

if(st.size())//如果最后栈内还有元素,那一定是匹配不了的括号,也就是多余的括号。++i)//遍历字符串:遍历这串输入的括号。else//如栈内没有元素了或者栈顶不是可与字符串中的该字符匹配的’(’//并且栈顶为右括号(正好栈顶元素可与字符串中的该字符匹配为一对括号)//栈就把’(‘弹出,与字符串中的该字符匹配。//栈内"每一格"都是一个字符"(" “)”了解栈的工作原理:push压入,pop(栈顶)弹出。//那就把这个字符压入栈中。’(’)//如果栈不为空。

2024-03-22 18:57:18 271 1

原创 带备忘录的递归—->斐波那契数列

解决方案:使用带备忘录(数组存下计算过的结果)的递归—->计算过的斐波那契数列的那一位就不会再重复计算—->相当于每位只做一次计算操作—->时间复杂度O(n)约为n。原因:上述递归构成一颗搜索数—->结点数约为2^ n个—-> 时间复杂度O(n)约为2^n。//如果这一位已经计算过(demo[n]存在),那么就直接返回,不再重复计算。输入n,求F(n),n <= 100000,结果对1e9+7取模。n > 3时,F(n) = F(n - 1) + F(n- 2)已知F(1)=F(2)=1;

2024-03-20 14:56:51 302 1

原创 蓝桥(OJ:3766)无尽的石头—>C++

从1出发,到达23: i=1—->i=2—->i=4—->i=8—->i=16—->i=(16+(1+6))=23,i=n,count=5;从1出发,到达15: i=1—->i=2—->i=4—->i=8—->i=16,i>n,count=-1;从1 出发,到达8: i=1—->i=2—->i=4—->i=8,i=n,count=3;比如i=16—->i=(16+(1+6))=23,我们需要知道里面的(1+6);当前该走的步数i>=目标石头对应的步数n时,说明不可达,输出-1;//每次遍历步数自增1。

2024-03-20 12:03:09 849 1

原创 蓝桥OJ:DNA序列修正—>使用map来解决

第一条的某个位置和第二条的对应位置为不互补字母(比如A-A),且在后面某个位置第一条的某个位置和第二条的某个位置也为相同字母,且该字母与前某位置的字母互补(比如T-T)map<char,int>DNA={{‘A’,0},{‘C’,1},{‘G’,2},{‘T’,3}};若字符串up中的i位置与字符串down中的j位置匹配,且字符串up的j位置与字符串的i位置匹配,执行down的i,j位置交换,操作数加1.//序列可能存在不满足操作1的情况,或者执行操作1后序列仍然存在不互补的。(需要进行2次操作1)

2024-03-19 20:44:58 775 1

原创 蓝桥OJ 3238:小蓝和小桥的挑战 C++详解

3.由于存在问题(非负数加正数可能为0)即—-> sum=0时,比如:-1 -1 1 1,虽然乘积不为0,但它的总和却重新回到0,没关系,我们只需要让操作数+1,使得某个数变动,那总和结果就不为0了。举例:1 2 3 0 0 0,为满足以上条件,我们尽量将0都+1 —>1 2 3 1 1 1.0)//(0 0 0)不满足条件进不去,(-1 -1 1 1 )满足条件可进。0)//比如-1 -1 1 1。

2024-03-19 18:49:09 400

原创 蓝桥2021真题:灌溉—>模拟,枚举

/由于后续将用after覆盖original,所以在after在原水管位置也应是被灌溉状态after[i][j]=1。//若不创建after仅在original上灌溉很难保证前一分钟的灌溉情况(哪些是前一分钟的哪些是前两分钟灌溉的)//而after可将已灌溉的保留下,我们就能明确哪些是第1min的/第2min的/第3min的。//(灌溉前与(下一分钟)灌溉后。

2024-03-18 20:24:40 350

原创 蓝桥:扫雷(549) 暴力 模拟 C++

/结束本次循环(不必要再遍历九宫格,该位置答案就是9),跳到下一次。//将该格的答案=9,后续将正常输出。//现在遍历answer矩阵,每次循环都输出该位置对应的最终答案。++j)//某行中各列。{//扫描周围八个相邻方格中的某格时,先判断该格是否有雷。//定义2个矩阵(二维数组),一个作为输入一个作为答案。//遍历每一个输入进矩阵的数。//双重循环遍历输入。

2024-03-18 16:17:00 344

原创 蓝桥OJ(3272) 小蓝的漆房 C++ 超详解

/若j=2时数组中的数据不为x,就要从j=2开始覆盖,直到j+k-1时结束,说明每次覆盖两k(k=2)个数(a[2],a[3])//结束内层循环中当前循环,开始下一个循环//(1)22333 -> 1(2)2333。//举例122333,k=2,开始枚举,每次循环枚举得到的day都不一样。//采用x将不为x的数覆盖为x,一次只能覆盖k个(k=2)//"1"111111 ->3天,day=3。//"2"222222 ->3天,day=3。//"3"333333 ->2天,day=2。cin>>n>>k;

2024-03-17 23:44:50 433 1

原创 小明和完美序列 C++ 使用set与multiset解决

/使用set(不允许重复元素存在相当于map的key)和multiset(允许多个/重复元素存在相当于map的value)//相当于记录key为x时,对应的value中数字的数量。//set用于记录出现了哪些数字;//关于插入补充:map使用insert(插入一对),set使用insert(插入单个)for(auto x:myset)//使用自动变量遍历set集合。else if(x<num)//如果该数本身小于该数的数量。if(x>num)//如果该数本身大于该数存在的数量。

2024-03-16 17:21:23 366 1

原创 问题:小明和完美序列 C++枚举——>使用map解决

//每遍历一个a[i],对应key为a[i]的value就加1,value记录每个key对应的数字个数。//方法一:使用map<int,int>,注意这里和map<int,vector<int>>不同,其中vector是容器(向量)//count别乱用:mymap.count(3)表示记录"为3的key"有几个,要么1(存在),要么0(不存在),key唯一。//举例:11 222 333 4444 5,其中1和2都多了一个,删除一个1和2,其中3和4正好不用管,5少了,全删。

2024-03-16 16:29:08 381

原创 特别数的和 蓝桥C++

2024-03-16 14:59:10 384

原创 题目:小蓝吃糖果 优先队列

/思想:最开始吃最大的两个数,吃到最后如果剩下的某种糖果数量>1,那么说明其他种类的糖果消不掉数量最大的糖果,输出No。if(sum-max>=max-1)//max-1指可插入的空隙数,sum-max指除最大糖果外剩余的糖果。//x和y互相吃剩下的糖果数 倒回去。//只有每次循环都pop出去才会更新top。//不使用优先队列 仅使用基本函数max。//小蓝吃糖果 考察优先队列。

2024-03-13 20:16:05 383 1

原创 蓝桥杯c++ 真题 顺子日期

+i)//2022- * * -比如2022012x 20220213。if(t1.size()==1)//1,2,3...9月份写成01,02,03,09。if(t2.size()==1)//1,2,3....9日写成01,02,03,09。//分析:2022---- 只有后四个数可能出现顺子日期 所以讨论月份和日期。//2022属于平年,平年2月28天,共356天,闰年2月29天,共366天。else//10,20,28,等等日期。else//10,11,12月份。//字符串拼接:日期。

2024-03-13 12:14:48 333

空空如也

空空如也

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

TA关注的人

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