自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 dfs——八皇后

【代码】dfs——八皇后。

2025-04-08 07:33:00 126

原创 第十届蓝桥杯省赛C++B组 后缀表达式

首先要知道如果m>0时的所有m可能的值,其实跟m=1的情况一样,当m=1时,我们可以得到下面这个式子....+....-.....(....+....),而当我们多一个减号的时候,即m=2,我们可以把这个减号放到括号里面,那就变成了....+....-.....(....-....+....),那其实这个时候,这个减号想当于一个加号,如果放到外面就是一个减号,总的来说,我们可以通过减号放到括号里外来控制它时减去一个数还是加上一个数!题中所述有n个加号,m个减号,n+m+1个数,求其中的最大值?

2025-03-22 16:57:49 256

原创 AcWing 5590. 沿栅栏散步

1.点在栅栏上,奶牛沿着栅栏移动,遍历栅栏上的每一个点,以p-1个点为前缀和起点,求出每个点到其的距离,即s[x][y]=++sum,这样遍历完,sum也是这个多边形的周长;2.点的移动通过方向函数(get(x,tx))来完成,通过判断当前点(x,y)->目标点(遍历点(tx,ty)),x与tx,y与ty的大小来移动点。3.点的储存用到了pair,较为方便。

2025-03-12 09:56:55 282

原创 蓝桥杯 C++ b组李白打酒加强版,动规及dfs+记忆化搜索双解

(3)初始化:初始经过0个店和花,且酒为2,故应初始化f[0][0][2],并且不论经过一个花还是一个店,对于可能的下一项f[1][0][4]或者f[0][1][1],它俩的方案数肯定都是1,因为只能从f[0][0][2]得到,再结合我们的转化公式(详见代码吧,更好理解),可知初始化f[0][0][2]=1;ps:下面的f[i][j][k],我们可以在使用前定义int& v=f[i][j][k],然后在本来使用f[i][j][k],替换为v了,可以去搜一下相关使用~~QWQ。的情况走一步只会得到。

2025-03-11 15:50:07 608

原创 蓝桥杯 C++ b组 统计子矩阵双指针+一维前缀和

3.题中要求的是子矩阵所有数的和<=K,而一开始L=R=1,我们是要遍历R到右端点,并且再这个过程中计算这个围成的矩阵和是否已经超过了K,超过了,那么就要让L++,并且对于每一个移动的R,应该都是可以固定一个L是其矩阵刚好<=K,那么此时L与R围成的矩阵的恰好满足 ,我们整体的优化思路是:枚举子矩阵的上下边界,这是双层循环,然后在每个固定的边界里,用左右指针l,r来查找状态下满足的子矩阵个数,这么说可能比较抽象,下面用通俗一些的话来解释吧!,而题中N最大500,大概就是。,但我们一般要把操作次数维护到。

2025-03-09 23:10:12 406

原创 蓝桥杯 C++ b组 积木画状态压缩dp

3.状态转移公式:f[i+1][k]+=f[i][j]*g[j][k],首先理清这里面的i,j,k都是什么。而后面的f[i][j]*g[j][k],即f[i][j]想变成f[i+1][k],就必须满足g[][]!四种方式摆放完对应的i+1列也会有四种状态,所以第i列摆放为00的时候,可以让i+1出现00,01,10,11四种情况!1.定义状态数组f[i][j]:i表示当前的位置,j表示当前位置的状态,f[i][j]表示在前i-1已经摆满的前提下总共有多少中摆放方式。k表示转移后i+1列的状态。

2025-03-09 21:58:38 519

原创 AcWing 5540. 最大限度地提高生产力

1.首先第一步就是对t[i]+S<c[i]式子进行适当的变形,比如常见的操作,把数组放到不等式的一边,S是定值单独放左边,就成了S<c[i]-t[i],我们可以把c[i]-t[i]改为一个新数组,也可以直接覆盖到其中一个数组上,比如c[i]-=t[i];下面c[i]用C[i]来表示,防止弄混。题目大意:给定N个农场,而我们要去访问农场,并且只有在t[i]+S<c[i]的时候,才算访问成功第i个农场,然给给了我们S,t[ ],c[ ],访问次数Q,求我们是否能成功访问至少V次?

2025-03-09 09:51:53 285

原创 AcWing 5539. 牛奶交换

LR,因为它是一个圆,所以最后的R和第一个R在连接着的!我们会发现,加红的字母都会获得1升牛奶,而他们是满的,所以获得的1升牛奶全部溢出了,由此我们便能发现只有RL的交界处的奶牛不会损失牛奶,其余的都会;换句话说就是在一条连续的R链上,只有最右边的牛奶不会损失,每过一分钟,R链最左端的牛奶就会少一升,当它的牛奶为0时,就该左端第二个失去了,所以如果时间足够长,除了最右边的牛奶全部会损失:同理L链亦是如此。2.每个奶牛具有一个桶和方向,桶的深度用a[i]表示,方向为“L”和“R”,即左和右,初始桶都是满的;

2025-03-08 10:55:08 170

原创 蓝桥杯 C++ b组 X进制转化 枚举

先了解进制转化:比如常见的十进制,数“abc”,其实就是a*10*10+b*10+c。或者二进制转化成十进制的时候,二进制数“abc”,对应的十进制数为a*2*2+b*2+c;a*8*11*2+b*11*2+c*2+d=( (a*8+b)*11+c)*2+d//代码用的这个思路求的嗷!数“abcd”,a是10进制,b是8进制,c是 11进制,d是2进制。2.定义X进制,即一个数各个位置上的进制可能不同,比如。3.给定两个数A,B,两数都为X进制,且A>B;,以上面加粗黑字为例,转化为十进制就是。

2025-03-05 10:40:04 155

原创 AcWing 5525. 炮弹

题目大意:给定一个长为N的数轴,上面的每个点有跳板(0表示)或者炮击目标(1表示),且都具有能量(v[ i ])。解题思路:这题很容易想到模拟,难点在于可能会死循环,就是炮弹在两个跳板之间一直反复横跳~~~,会TLE,如何能跳出死循环呢?(3)跑到最左端后,再次出发并且这趟每次能跳2格(因为还跳一格的话就死循环了,这已经是最坏的情况了),然后一个来回~,跑了。(2)然后,最坏情况下,炮弹从最左侧开始发射,且每次发射的长度为1,跑到最右端再回来,2.给一个循环上限,当炮弹跑了一定次数后,直接退出循环!

2025-03-04 16:08:46 506

原创 AcWing 5526. 平衡细菌

每次操作可以选择一个位置p,使从位置p开始至序列最右端,加上或者减去一个等差数列n,如。由此可得,如果想让原序列都为0,我们可以让一阶差分都减1,也可以让二阶差分的首项减1.都为0,,其实就是让二阶差分都为0,即二阶差分每一项的绝对值的和就为最小操作次数。(ps:可以减1,减2嗷),求让序列为0的最小操作次数。题目大意:给定一个序列。解题思路:利用二阶差分。如果还有不懂的,请移步。

2025-03-04 15:33:21 273

原创 AcWing 5439. 农夫约翰真的种地

先移项,h[r[i]]-h[r[i+1]]>x*(a[r[i+1]]-a[r[i]]),因为式子太复杂了,可以用A,B来表示左右俩边的多项式,A=h[r[i]]-h[r[i+1]],B=a[r[i+1]]-a[r[i]];题目大意:给定N个芦笋,第i个芦笋初始高度为h[i],每过一天会长高a[i];再次强调,r[i]里面的i是排名,r[i]的值是编号,h[r[i]]就是第i名的编号的芦笋初始值!2.我们有思路1可得一个不等式,h[r[i]]+xa[r[i]]>h[r[i+1]]+xa[r[i+1]],

2025-03-02 14:19:53 932

原创 AcWing 5524. 多数意见

我们可以选定一段连续的区间,如果里面的牛牛有一半以上喜欢同一种甘草块,就可以让所有牛牛喜欢同一种甘草块;要求的是是否可以让所有牛牛都喜欢同一种,可以的话按照升序输出符合的甘草块,不可以的话输出-1,我们可以发现所有的有限区间内,可以分为许多个子区间,只要有子区间符合上述情况,就可以满足题中所述。代码部分就挺简单,可以用set容器来存符合的h[i]值,set容器会自动升序排序,并且去重,如果set为空的话就输出“-1”;2.在三个牛牛君的区间,形如“aba”的,也可以让所有的牛牛君喜欢同一种。

2025-03-02 10:52:28 169

原创 AcWing 5438. 密接牛追踪2

解题思路:题目要求的是初始最少感染数量,所以可得我们希望感染的天数更长,例如:总共五头牛全被感染了,如果初始就有五个感染牛的话一天都不需要,但一头牛经过3~5天也可以感染完,5天才能完成是因为初始感染牛可能在两端,此情况后续也需特殊分析。题目大意:给定一个长为N的牛牛数组,其中一头牛牛感染病毒的话,经过一晚,会传染给相邻的俩牛牛,题中会给我们经过n个夜晚后的牛群感染状态,求一开始就感染的最少牛牛君数量。1.假设初始一头感染牛经过d天,那么可以感染的范围为2d+1,那么对于一个区间为C的感染。

2025-03-01 11:13:08 174

原创 AcWing 6131. 农夫约翰最喜欢的操作

首先对a[i]进行排序,然后取中位数即可,但该问题使建立在同余关系下的,因此可能存在此种情况,比如a[i]=1,而M=9,然后a[i]要变成8,如果a[i]+1,的话要操作7次,但a[i]=1是对M取mod得到的,所以a[i]还可以等于1+9=10,那么只需要-1俩次即可.所以我们发现,想取a[i]的中位数,可以把a[i]数组开俩倍,1~n存对M取模之后的数,n+1~2n存a[1]+m~a[n]+m的数,这样我们只需要取其中长为n的线段,然后对该区间找到中位数,求各点到中点需要的操作次数即可。

2025-03-01 10:10:47 254

原创 AcWing 5437. 拐杖糖盛宴

题目描述:一群奶牛a[ ]去吃一排的拐杖糖b[ ],糖固定在自身的最高处,然后从第一个奶牛a[1]开始,先去吃第一个,a[1]吃完,a[2]吃,直至把b[1]吃完,再从a[1]开始吃......b[2],b[3]...b[m],另外,奶牛吃多少糖果就会长多少;(2)a[1]<b[j],那么a[1]不断的在以自己的身高成倍增加,当a[1]大到一定程度后,就一直是第一种情况了,当a[1]>b[j]max时候即1e9,就是大概a增加30次,所以复杂度为O(nlogn)分析:第一个奶牛吃的情况分两种,

2025-02-26 10:39:13 304

原创 AcWing 6135. 奶牛体检

在反转的时候,我们只需要取其中一个点或者俩个点,然后对其俩边进行延申即可,这样做的好处:一开始假设我们取其中俩点,然后先判断这俩点a[l]与b[i],a[r]与b[r],是否相等,相等则减-1,然后判断a[l]与b[r],a[r]与b[l]是否相等,相等则+1,然后随着反转范围(l,r)的扩大,我们继续上述操作,直至遍历完,发现没,这样的话我们在判断反转后多少个相等的时候,只有O(1)的复杂度,加上俩层遍历就是O(N2)题目大意:对数组a[ ]进行反转操作,反转范围为(l,r),注意。

2025-02-25 11:55:23 360

原创 AcWing 6134. 哞叫时间II

如果r[a[i]]==2,就出现了题中要求得“abb”形式,那么此时前面的数据种类数就是该“abb”中“a”的种类,直接答案ans+=cnt即可,同时还要注意此时的“a”的种类数还可能出现“bbb”的情况,所以if(l[a[i]]>0) ans--;1.输入数据a[ i ]的时候,对每个数据出现的次数进行计数(出现一次数组L[a[ i ] ]++),并且对种数也进行记录,即当L[a[ i ] ]==1的时候,cnt++(cnt为数的种类)

2025-02-25 09:17:10 223

原创 AcWing 6118. 蛋糕游戏

然后B吃,B吃完又变成偶数,所以不难推出,最后剩下2个的时候,该A合并了,而A合并完,剩下一个,就可以直接吃掉,而A又是先手,所以在理想状态下(假定A合并的全都没被b吃掉),A吃的个数比B多2个,我们记为A-B=2,所以在理想状态下,A吃的个数为n/2+1,B的为n/2-1。2.其次,我们先对B考虑,B是吃俩边的,那么对于B来说,它至少可以吃n/2-1个,多吃是因为,A合并的被它吃掉,但B至少吃为n/2-1个,并且B在吃的时候,很自由,它想吃左边右边是无拘无束的。读完题,我们的问题就是,AB应该怎么吃。

2025-02-22 16:54:27 573 4

原创 AcWing 6122. 农夫约翰的奶酪块

所以对于a[x][y]这个二维数组,其实就是表示(x,y)到(x+1,y+1)这个1x1的正方形(面),a[x][y]的值就是这个面后面被挖了多少,如果到了N,那么就可以放了,别的面(O-yz,O-xz)同理。

2025-02-22 11:50:53 160

原创 AcWing 6123. 哞叫时间

1.就是先用遍历可能的子串,从a~z,因为是abb形式,因此需要嵌套循环,再来个a~z。而我们要输出的是满足要求的子串个数,所以首先需要有一个变量来记数,4.如果满足了>=F,存到容器里面(容器的个数就是满足的子串个数)2.再遍历原串,看看有多少个子串符合此次的“abb”,记数下来。3.再次遍历,查找是否可以修改后使本次的“abb”出现次数+1。

2025-02-22 11:33:41 320

原创 P2234 [HNOI2002] 营业额统计

【代码】P2234 [HNOI2002] 营业额统计。

2024-09-06 09:52:56 214

原创 P2058 [NOIP2016 普及组] 海港

【代码】P2058 [NOIP2016 普及组] 海港。

2024-09-05 13:34:18 1213 1

原创 P8649 k 倍区间

【代码】P8649 k 倍区间。

2024-04-10 20:22:25 185 1

原创 P2440 木材加工

【代码】P2440 木材加工。

2024-04-07 09:53:57 533

原创 P2947 [USACO09MAR] Look Up S

【代码】P2947 [USACO09MAR] Look Up S。

2024-03-26 08:41:30 198

原创 P1160 队列安排

【代码】P1160 队列安排。

2024-03-23 14:09:51 255 1

原创 洛谷p1540机器翻译

【代码】洛谷p1540机器翻译。

2024-03-21 18:49:11 122 1

原创 洛谷p1996

/最后一个单独输出,因为只剩下一个节点了没有前后节点,因此39,40,41无法实现。//输出的节点即将被清除,连接此节点的前后。i++)//循环m-1次now即可指向第m个。//新节点指向NULL。//上一个节点指向新节点。//now现在的节点节点位置,从1开始。while(n>1)//循环n-1次,找出n-1个人。//现在在第一个节点。

2024-03-20 14:21:26 464 3

空空如也

空空如也

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

TA关注的人

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