自定义博客皮肤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)
  • 收藏
  • 关注

原创 【补题】P9423 [蓝桥杯 2023 国 B] 数三角

题意:小明在二维坐标系中放置了 n 个点,他想在其中选出一个包含三个点的子集,这三个点能组成三角形。然而这样的方案太多了,他决定只选择那些可以组成等腰三角形的方案。我的代码写的非常有问题,不仅组合数计算错误,其实分组也没分好,而且很多关键性质也没发现,只能说一坨了,那么代码好好纠正,我觉得以后得一步步写,不要脑子一热就开始了,参考了题解,写的十分优美。思路:这个数据量肯定不能n^3暴力,所以很简单就是对于每个点求其他点到这个点的距离,然后根据分组计算组合数,但是要注意三点贡献,其他就是代码的事情。

2025-04-10 15:21:32 263

原创 【补题】P10424 [蓝桥杯 2024 省 B] 好数(数位dp)

1.dp[i]代表当前这一位在填写[1,3,5,7,9]或者[0,2,4,6,8](注意要小于数本身)的可能算上所有的个数,因为高位固定,低位一定能两个区间都能取的,直接预处理pre数组,进行计算就好。这里不对暴力进行讲解,网上有非常多的题解,做法也很简单,这个做法的缘由是我没看数据量,认错了,以为是数位dp,当时没做出来,现在补上,也算是学习数位dp了。dp[i]表示的是,当前位置之前填写最高位的这个时刻,填剩下所有可能数的大小,往后就是默认填写最高位数字的,如果不是很明白推荐 董晓老师的数位dp。

2025-04-09 21:10:24 333

原创 【补题】Codeforces Round 974 (Div. 3) E. Rendez-vous de Marian et Robin

不可能多源dij,类似于给所有有马点连接一个新的源点,将多源异化成单源就可以了,同时他们可以合并进一次操作中,如果还是不太清楚,可以自行查询一下多源bfs当单源的操作,方便理解但是是一样的实现想法。题意:给个图,两个人分别从点1和点n出发,问最早在哪个点可以相遇,其中某些点有马,骑上去之后可以在接下来剩余的时间内都可以将路程所需时间缩短一半。但是你可以这么想,类似形成一个分层图,骑上马后要对最短路重新规划,可能往回走,但是这样的点也有多个,是多源的,关于题目数据见原题,这里说明太累了。

2025-04-09 15:17:15 351

原创 【补题】European Championship 2025 - Online Mirror F. Mascot Naming

但是应该确保不影响当前去年字符串的能输出就输出,是一种贪心,因为构造方式不当可能会造就去年字符串的出现,应该在被逼到不得不输出之前,能多输出多少,就输出多少,这样去年字符串出现的机会就会减少,想一想应该就知道了。因为如果没有,那么代表有一个字符,它一定能出现在非正确顺序上,题目的子序列其实强调了字符间有先后顺序,不然组成不了了对吧,如果没要求顺序,那肯定是可以构造出不组成去年的字符串的。题意:给出n个字符串和一个去年的字符串,要求最终答案给出来的字符串能组成所有的n个子序列,然后不能组成去年的字符串。

2025-04-09 10:05:09 260

原创 【补题】Educational Codeforces Round 150 (Rated for Div. 2) C. Ranom Numbers

题意:给一串字符串,从A-E,数值大小分别为1,10,100,1000,10000,对于这个字符串数值总和的计算方式是,如果那一位的字符的右侧有严格大于它的字符,那么数值变为负数,有一次随意改写一个位置字符的操作,问最大的数值是多少。1.首先由于题目的性质,改变一个位置的字符,不会对它的右侧造成影响,所以在已知右侧字符的情况下,左侧其实要关注的是已知字符子串的最大,因为大于最大不会受影响,小于怎么样都受影响,只需要关注已知出现的最大字符,这给了dp的机会,2.反转字符串在于,现在问题就转化成了,

2025-04-08 09:53:30 166

原创 【补题】Codeforces Global Round 21 E. Placing Jinas

其实每一条线都有p=x+y+1,p为层数,就是上一层的值加到当前层,所以怎么说都是杨辉三角。正好有了x+y+1=p,所以的的确确可以O(1)得到每一格了。以下是证明,其实应该是能直接背板背出怎么算每一格的……2.但是时间复杂度还不够,肯定是O(n),所以要把每一层高度的值成功处理好,也得O(1)得到,如果你现在把每一格的算法写出来,你会惊奇的发现!惊奇的发现是杨辉三角!代码: 注意上面讲解是根据原题链接的,代码是i的原本坐标与上面讲解不同,已经-1了。别说杨辉三角,我连帕斯卡定理都不太知道……

2025-04-07 11:04:57 243

原创 【补题】Codeforces Round 805 (Div. 3) G2. Passable Paths (hard version)

假设点集合是正确的,如果其中一个最远点不是最深,那么它一定不是最远,因为深度更远的点一定由这个点走出来,等于它的长度+1,所以其中一个最远点一定是深度最深。4.其实接下来也是一样的,第二个最远点只要用现在这个最远点就可以了,直接遍历查询,时间复杂度O(nlog),得到路径后我们在查询一波,因为路径唯一,接下来查询的点与两个最远点其中一个的祖先节点肯定是自己,与最远点得出来的祖先节点肯定与两个最远点得出来的一样。题意:弄个树给你,然后给出q个询问,每次询问一堆点是否可以在最短路径上的每个点只被走一次。

2025-04-06 12:17:13 379

原创 【补题】Codeforces Round 805 (Div. 3) E. Split Into Two Sets

2.什么时候不可以呢?[1,3][2,3]根据是敌人的敌人,他们不应该在成为敌人(1和2)这时[1,2]加入后,1和2居然又成为了敌人,那么说明1,2是不可能走到一起去的,又要是朋友,又要是敌人,这是不被该题允许的,判no即可,然后注意其他特判同一数字只能出现两次和不能与自己为敌。1.根据题目不能出现相同的数字,其实就是同一组合内为敌人,所有这个敌人的敌人,也就是自己的朋友,拓展n,让同一组合内的数字成为敌人,并且所有的归到一类(通过不同敌人,进行连接)。

2025-04-06 11:22:43 178

原创 【补题】Codeforces Round 802 (Div. 2) D. River Locks

状态转移方程 dp[i]=max ( dp[i] , (sum+i-1) / i ) ,其实就是直接所有取max,一来一去其实是优化掉了dp数组,因为计算方便,如果你有心,你会发现dp数组一定是单调不减的,所以只取max是可行的。题意:给一堆连在一起的水库,每个水库都有一个水龙头,每秒流一单位容量的水,如果当前水库填满,那么多出来的水只能向i+1移动,最终流到河里(外界),给q个询问,问在给定时间中,是否可以让所有水库流满,最少开几个水龙头。,一定会为整个水库系统贡献的答案。,综上,换一种说法就是。

2025-04-06 09:54:02 356

原创 【补题】Codeforces Round 1011 (Div. 2) C. Serval and The Formula

为了让n+m==n异或m成功,很明显有两个数在同一位上最多只能有1个1。因为如果有两个就会导致数字变小,很明显n==m是不可能成功的,因为你怎么搞都会有至少一个一模一样的1,所以n==m,答案是-1。反思:真的有被坑到,还是太打开思路了,构造十分简单结果想不到,反思啊反思,对于问题的转化还不够透彻。其余的让最大值构造成100000……,另外一个数因为小于这个数,所以一定构造不成一样。题意:给两个数,问你存不存在k使n+m==n异或m。

2025-04-05 13:31:46 164

原创 蓝桥杯2024年第十五届省赛真题-零食采购

2.如果你第一步想到暴力,那肯定是dfs去把每条路都走通试试,然而这样一来时间复杂度必然爆,因为每一次都有可能跑满n,5000*1e5必然超时,此时我们引进lca算法,这样一来两个点之间的查询就会被缩短至log,如此一来时间就够了,如果你不懂lca算法,我会在文末稍微介绍一下,现在你只要知道时间被缩短为log就可以了。这是一个点怎么跳的由来,你可以发现我定义好了1-7,所以lca是需要有顺序的,dfs其实是将无根树变成一个有根树的过程,在这过程你别忘了记录深度(7的深度是7),我们接下来要用。

2025-04-03 23:20:22 771

原创 【补题】Xi‘an Invitational 2023 E. Merge the Rectangles

判断这条线是否成功贯穿了当前矩形,如果没贯穿但是有线的存在,得记录下来这里可能是导致无法合并的原因(无法合并就是凭空在当前矩形里挖了一块,看一下样例就知道了,是凭空捏出来的,凑出来的矩形)没错,就是把在分割出来的矩形,再画一条笔直贯穿的线,有并且一定是笔直的,因为弯曲的线会导致分割出来的图形不是矩形,题意:给个矩形,然后在里面画很多条线,将矩阵分割,保证分割出来的图案一定是矩形,至于n,m矩阵这里不多赘述,题意就是这样,如果不记得了请转至原题。因为如果当前分割出来的矩形是可合并的,

2025-04-03 20:29:37 354

原创 【补题】第 48 届 ICPC 国际大学生程序设计竞赛西安邀请赛 H - Spin the Wheel

题意:给一个轮盘,或者说序列,有两个操作1.随意旋转,类似于下标0 1 2 3 4(初始下标)变成 3 4 0 1 22.为上面添加相应位置的值0 0 0 0 0(初始值)变成 0 1 2 3 4起始值均为0,问给出一个最终结果序列,能从初始值到达吗?

2025-04-03 16:08:38 272

原创 2025年中国传媒大学程序设计大赛题解 小红的dfs

因为并查集适合合并,而不是区分,如果是在线操作,那么每次添加炸弹都有机会把原本的连通块进行拆分,为了判断拆分,每一次添加炸弹都要遍历,如此一来时间复杂度就爆了。离线操作也就是将操作顺序倒过来,先添加好所有炸弹,再选择取消炸弹,如此一来拆分操作变成了合并操作,如果两个连通块在去掉了这个炸弹后能联通,其他地方也就不用管了。思路就到这里,所以先dfs初始化连通块,之后对每个消除炸弹操作进行判断,是否有连通块在这之后可以联通了,注意每个点要找到他的父节点,而不是自己本身。

2025-04-02 21:21:13 233

原创 2025年中国传媒大学程序设计大赛(同步赛) 小红的bfs(hard)

例: x1---x1*2-----2*x2------x2,x1和x2是不同的质数,借由2跳效果是最好的,因为当前数在排列中出现的可能性最大。3.我想一个数能最简单的跳,那肯定是最小的质因数,并且题目ai数据量不超过1e5,改造一下质数筛,预处理好每个数的最小质因数就可以执行2操作的判断了。3)最坏的情况,以上都不行,那我一定是找一个左端最好跳的,在跳到对右端最好跳的,也就是3次可以跳到,如果没理解看一下样例。2)两端不能直接跳,但是如果两端的最小质因数相乘的数字存在,那间接跳。

2025-04-02 17:36:24 192

原创 【补题】CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) E. Count Seconds

题意:给出一个有向无环图,然后给出长度为n的序列代表每个点一开始携带的起始值,如果当前点拥有的值大于0,每过一个单位时间就会给所有连接的点(自己是出发点)提供1点贡献(被连接点值+1)同时每个点每过一个单位时间值会-1,问过去多久时间整个图的所有点都是0。2.似乎只要bfs一遍流完就好了,但有可能 1 0 0 0 0 1,点流出去的时间大于权值本身,第一个1实际上流动了n的时间,所以针对这个问题,我们可以直接先模拟流动n的时间,这样就会保证我们bfs出剩余权值的总和,完成后不会有权值停留在图中。

2025-04-02 13:42:20 194

原创 【补题】Codeforces Round 894 (Div. 3) F. Magic Will Save the World

2.所以只需要某个时间,水的能量大于水能击败的怪物,火也同理,可以想到dp,也就是多少怪物分配给了水,剩下怪物分配给火,于此同时因为怪物数量x怪物强度不超过1e6,而且怪物的次序对于最终结果没有影响,所以dp开成分配给某一方的强度就可以了。3.记录总和,x是水要处理的怪物强度,sum-x是火要处理的怪物强度,x/w就是当这么分配的时候所需要的时间,火也是可以直接计算,所以对每个存在的状态计算所需要的时间然后取min即可。

2025-04-02 11:41:20 197

原创 【学习】Codeforces Round 805 (Div. 3) Codeforces Round 805 (Div. 3)

综上,优先队列维护a,b序列最大奇数值,如果 a.top()>b.top()那一定得不到,相等一定是好操作(如果有别的值在这里相等,是谁去操作的效果都是一样的,详细看3)如果b.top()>a.top()那直接/2放回去就可以了。其实>1的判断可以去掉,一开始是觉得所有数都可以操作成1得到所有2的n次的,后面发现错了,关注任何奇数本身都很重要,并不需要这句,b其实也可以不预处理成奇数,因为最大1e9的情况每个数最多操作30次,

2025-04-02 09:18:42 198

原创 【补题】CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) D. Magical Array

再次感叹一下这个思路的强大,因为题主本身做的时候前缀和还有操作有区分都找到了,就是不知道到底怎么找出两者之间的区别,没想到居然是前缀和生成会不同,非常非常震惊QAQ,我感觉这个太恐怖了,感觉纯靠脑洞一样的。1.其实非常明显,操作2与操作1的不同之处其实就是对j进行的操作不同,i操作是相同的,那是不是代表i操作执行过后,并不会改变某些特质?操作 1:选择两个整数 i 和 j ( 2≤i<j≤m−1),从 ct[i] 和 ct[j] 中减去 1 ,然后在 ct[i−1] 和 ct[j+1] 中加上 1。

2025-04-01 17:54:12 242

原创 【补题】 Codeforces Round 806 (Div. 4) G. Good Key, Bad Key

问题就出在只执行了30次操作的情况下,我们是后面不止30次操作,都/2,类似于一直拿0,但是dp过程并不一定有这个操作,其实可以用另外的方式(题解中的else if,来自。1.dp,两种状态,用好钥匙和用坏钥匙,因为坏钥匙会导致之后所有的宝箱价值/2,所以最多用30次,再多就没意义了,全变0了都。2.贪心,因为如果你用了坏钥匙在用了好钥匙,后面使用好钥匙的那次相当于白少了,因为你用好钥匙也一定是因为获得的价值大于消耗吧?,原本用坏钥匙的地方是不是也变好钥匙了。1.用好钥匙打开,用好钥匙需要消耗m的代价。

2025-04-01 17:29:47 341

原创 【补题】[ICPC 2024 Xi‘an I] Make Them Straight

这代表了我们已知k的情况下,到后面有数字一定需要修改,那么是不是在之后某个ai开始的所有值的a1都没有讨论的必要了?时间复杂度,一个小技巧,已知k,i,ai,那么a1是不是可以算出来,简单的小贪心,改变的数字越少,答案一定越好,对吗?题意:给出两串长度为n的数字序列,a序列代表数字本身,b序列代表如果要随意更改那个数所需要的代价,问让这个数字序列变成等差序列所需要的最小代价。2.在枚举了k的情况下,a1的起始值也非常重要,但是再去枚举a1是不可能的,因为这样一来就类似。

2025-03-31 20:56:30 183

原创 【学习】Codeforces Round 807 (Div. 2) D. Mark and Lightbulbs

2.解决完-1,解决最小答案,其实就是相对位置的01串进行了“位移”的操作,记录每个连续0连续1 的左右下标(两界),因为是位移的操作,其实就是那个串本身移动了而已,所以直接对应计算就可以,不存在左侧过来帮忙建造这种说法,不然不是不符合我们前面的逻辑推理的不是吗?1.很明显这个操作不能随意更改灯泡,而是只能修改交界位置的灯泡,那么关注改变的01串非常重要,在看看就明白了,连续0和连续1的个数如果s1,s2对应不起来就是-1,同时关注到头尾不能修改,在判一次就可以。

2025-03-31 20:43:25 138

原创 【补题】 Codeforces Round 642 (Div. 3) E. K-periodic Garland

3.这里采用了一个非常巧妙的贪心的方法,还记得最差操作就是把所有1变成0吗,我们的操作可以看成在此基础上少操作了多少步,因此从头到尾遍历 i%k 的位置,那么我们就是去试图创造连续的1,如果原本是1,肯定是在原本基础上减少操作 -1 ,如果把0变成1,相当于少操作的用来在这操作了 +1。1.一定能成功的操作很明显就是把所有灯泡关了,所以也可以很简单的注意到,其实稍微优一点的操作就是留下一定的1,根据这一点你再看看题目,很明显本身就已经构成周期的1肯定是会更优秀一点的。

2025-03-31 20:32:33 96

原创 【补题】2024 ICPC National Invitational Collegiate Programming Contest,Wuhan Site F. Custom-Made Clothes

因为列之间也有着单调性,所以从上一行的列位置(j)抵达的a[i+1,j]后面的a[i+1,j+k],一定大于上一行的值a[i,j],所以直接从a[i+1,j]继续往前询问就可以了。2.这道题的关键点就是矩阵的非单调性,我们根据答案询问的时候,如果出现有小于当前答案,那么一定代表前面的值全部小于二分的答案值了,这个时候可以去询问下一行(i+1)了。题意:交互题,给出一个矩阵,其中a[i,j]一定大于等于a[i-1,j]和a[i,j-1],然后询问次数不超过50000次,要你确定第k大的数字最大是多少。

2025-03-31 11:46:48 183

原创 【补题】[ICPC 2024 Xi‘an I] XOR Game

2.可以发现1和2才是决定最终答案的关键,两者会避免操作2的时候是自己先手,因为2是先手必输,因此可以看成大于2的操作都是两人可以随便分配的,因为在这之前的操作并不影响答案,而到了2,两人为了最优操作,不会贸然进行。3.对1操作完后,就是剩下两人操作很久变成2的操作,2是谁先谁就输,并且2是偶数,先手会把2全部输掉,但是还要关注k,在这里是可以逆转自身结果的操作,并且有且最多有一次,谁是后手谁能把自己变为后手就能赢。4.因为>=3的操作是对答案无关紧要的,所以当作在操作0就行,并入到k进行改变次数的判断。

2025-03-31 09:43:50 312

原创 【学习】Educational Codeforces Round 155 (Rated for Div. 2) D. Sum of XOR Functions

1.就算预处理暴力l,r也至少是n方,很明显不是这么思考的,神奇的地方就是异或区间的操作可以预处理,在后续计算的时候O(1)返回。3.根据上面两点,在该过程中,记录前面这一位出现过的0的数量和1的数量,在利用乘法的分配原理。距离的累加利用 (r1-l1+1)+(r2-l2+1),r1==r2转变位。代码: 十分的优美嗷家人们,但是我写的略屎,跟队友搞不清分开写了。强烈建议学习一波,写的十分优美,原作者也是学习哥哥的代码。题意:给出一个数字序列,对所有的(l,r)区间做。

2025-03-27 23:28:07 277

原创 【补题】2024 ICPC National Invitational Collegiate Programming Contest, Wuhan Site B. Countless Me

题意:给定一个序列,然后接下来有最多n次操作,操作如下:任意选定序列中两个值,可以随意的从一方抽取值到另一方(被抽取一方之后数值不能小于0),问怎么能让操作后的序列,每个数进行或操作后答案最小。2.贪心,贪心,还是贪心。就越好,从高位向低位便利,询问如果当前位不填,后面是否能存在情况满足让这一位不填的条件。1.值是可以随意分配的,并且n次操作,也就是说一定可以对每个数也就是对整个数组按照要求进行重塑,因此数组本身的情况在后续是可以忽略考虑的。如果不满足,那这一位肯定要填了,所有位判断完就是最佳的答案。

2025-03-27 23:15:08 79

原创 【补题】Codeforces Round 644 (Div. 3) G. A/B Matrix

3.并且因为只要符合要求,每一行的1的次序是可以随意更改的,那么连续放置1连续在一起,很合理吧(=·W·=),然后每一行开始放在上一行结尾的后一个,可以让列之间的差距最小,也就是行之间是最平均的。这样贪心的放置,很合理吧(=·W·=)。题意:给出n,m,a,b四个数字,分别表示矩阵的列数、行数、每行出现的1的数量、每列出现的1的数量。tips:真的不是博主本人不知道怎么合理的解释这个贪心思维,简而言之就是好,可能后续有好的解释还会更新……2.a,b大小分别小于m,n,所以接下来是一定能构造出的。

2025-03-27 23:02:12 145

原创 【补题】K. Kim‘s Quest

题目:给一个序列,然后统计所有符合要求的字串(字串:从字符串随便选择出字符,然后按照任意原本相对顺序排列就行),要求是:从该字串挑出所有3个相邻的数字的小字串,相加之后为偶数(注意是全部的小字串),请问这样的小字串有多少个。,或者你可以观察到只有011011011,这样类似循环的结构才会出现符合要求的长字串。二:根据前面以某个字串结尾又有新的答案,例如当前位是0,那么可以由011出现符合要求的110。一:创造出新的字串,例如当前位是0,计算新的000字串就是。,很明显这是解题的关键点。

2025-03-27 22:51:18 173

原创 【补题】The 2024 ICPC Kunming Invitational Contest E. Relearn through Review

2.如果每次枚举都要进行计算,那么时间复杂度会极大,并且在仔细观察题目,最多一次操作,并且对象是连续的区间,其实可以对区间进行预处理。因为可以看作3个区间的最终结果,前缀+操作区间+后缀,3个区间是>=0长度的。3.关键点是因为前缀数组或者后缀数组的第一个值是不可避免被选上的,那么gcd只能越来越小,不存在超越值本身,包括与后面的值进行计算,因此枚举的对象是。题意:给出两个数n,k,然后给定一个长度为n的整数序列,最多一次操作,可以使任何长度的连续区间加上k,问怎么让这个序列的gcd最大。

2025-03-26 11:43:02 183

原创 【 补题】The 2024 ICPC Kunming Invitational Contest A. Two-star Contest

博主个人使用优先队列直接对每场比赛实现星级评分的次序,然后因为数字是自己填,评价标准是总和,那么可以看成一个比赛原有的分值sum和可以添加的分值ans。题目要求你填充-1的位置,使所有比赛的按评分总和排序跟星级评分大小排序次序相同,如果能实现就输出Yes和矩阵,如果不能就输出No即可。坑:最大的坑点就是星级相同,星级相同实际上是不要求数值有先后次序,也就是总和可以不同。,其中如果评分 >=0 那么就是实际评分,如果 ==-1 代表这个评委评分丢失,丢失要我们自己填充数字,大小不能超过k。

2025-03-26 10:40:04 152

原创 【补题】Codeforces Round 649 (Div. 2) C. Ehab and Prefix MEXs

因此是不会出现-1的,因为mex函数本身要求最小就是非递增的,但是题目直接满足了,然后mex函数不能返回出现数字数量+1的数字,但是题目满足了<=i所以也符合,因此是没有-1的。2.因为MEX函数必须要求数字的连贯,所以只要不出现数字本身,就不会产生更大的数字,因此只要不输出数字本身,在满足其他数字都连贯的情况下,就能控制输出的值。所以根据这个思路,只需要让未出现数字保持连贯,也就是需要出现,我们控制要求数字的输出,就能成功构造,其实也类似于更改顺序。1.因为题目的严格限制。

2025-03-22 23:20:20 252

原创 【补题】Codeforces Round 648 (Div. 2) D. Solve The Maze

反思:一开始按照这个思路搞成了多源bfs,然而实际没有必要,可以使用逆向思维,是否所有人能到达终点,也可以看成从终点起始,是否能到达好人能存在的位置,这样就变成最简单的bfs查询了。思路:其实思路非常简单,做的操作为了不让坏人到达,其实也就是封住坏人能走的道路就行,既然如此不如一开始就给坏人堵死,也就是把坏人用障碍物围起来。询问有没有办法,在可以任意选择空房间变成障碍的操作下,让所有好人可以到达位于(m,n)的终点,但是不让坏人能到达终点。之后使用bfs查询好人是否能到达终点即可。

2025-03-22 22:57:12 118

原创 【补题】Codeforces Global Round 27 D. Yet Another Real Number Problem

3.因为题目操作的要求,后面数字的倍率不能给前者,那么将后面数字自带的倍率应被看成自身属性,例如2,4,可以看成1,4(4并不能把自身倍率给前者,拆分无意义),选择把一个2乘给谁。那么根据这个思路,使用单调栈来维护目前出现过的最大基底,用单调栈来控制集中倍率和基底的数字。即维护的是从前往后,对提升总和最有帮助的数字以及分配给它的倍率。题意:给出一个长度为n的数组,接下来有一操作无限次数:选择两个位置,可以将将前面位置除2,然后使后面数字乘2,而且前面数字要能满足x%2==0。

2025-03-22 16:24:57 296

原创 【补题】Codeforces Round 650 (Div. 3) D. Task On The Board

然后对于新字符串有这样的计算方式:设当前字符为b,在新字符串中,所有ASCII码大于b的字符的位置与它的距离的和作为数组的值(即ai)。1.首先考虑到ai为0的时候,这个时候代表现在出现的字符一定是新字符串中最大的,而且这些ai为0的位置一定是同一批的,如果不是相同字符,一定会有一方受影响,所以必须是当前会出现的最大字符能填满这一轮所有空位。然后给出长度为n的数组,值为ai,要求你创造的新字符串满足它的要求,最后输出你构造出的字符串。

2025-03-22 16:05:54 201

原创 【补题】Codeforces Round 653 (Div. 3) E1. Reading Books (easy version)

2)选择各自喜欢的书,并且一定是一起选各自的,不会出现小红选1本后,再选一起更好的结果(这么思考是想到了怎么让小红最好的达到k本书要求,狠狠反思忽略了大局),当时自己陷入误区,这么想,后面才想明白是最后结果反而多选了一本,明明可以直接就选【都喜欢】满足均k的要求。题目大意:给出n(有多少本书在图书馆中),k(小红和小明均至少要看的爱看的书),后续n行给出ti,ai,bi,ti是花费的时间,ai,bi只有0/1两个状态代表小红小明是否爱看,询问让小红和小明完成要求的最少时间,如果不行就是-1.

2025-03-21 23:57:20 188

原创 【补题】D. Replace by MEX

tips:可能会出现【5,4,3,2,1,0】,mex的值是6,此时为了按照非递减排,只能放到最后一个【5,4,3,2,1,6】,因为最后一位变6,mex现在理论上限是5了,因此进行了n--操作,其实只要能实现对每个位置操作一次,而且保证按照非递减就行。题意:给个序列,每个数字在0-n之间,然后可以选择任何一个位置将数字变成当前序列的MEX数值,然后使最后成功的序列不递减。MEX:序列中最小没出现过的数组,如【0,2,3,4】是1,【0,1,2,6,5】是4。

2025-03-20 22:54:59 173

原创 Codeforces Round 975 (Div. 2) D.Cards Partition

2.如果不同的牌要能满足要求的情况下放入,必须满足(maxx代表所有种类的牌中最多的):maxx<=sum/x,同一牌堆中不能有相同牌,所以需要牌堆数不小于众数出现次数。可以看作是,为了让所有的牌能按照要求分到一组,别的牌必须要能成功配合最多数量的牌容纳,不然就总会有牌无法分配。题意:给数字n,k,n代表有n种牌,k代表有多少牌可以自由分配(万能牌),接下来一行给出每种牌的个数。1.要把所有的牌划分到不同的组,假设x是最后的答案,所以必须满足sum%x==0,即能被整除。

2025-01-31 18:45:38 171

原创 The 3rd Universal Cup. Stage 9: Xi‘an H. Elimination Series Once More 补题

1.当前数字在当前区间有足够的空获胜(1不可能在第一轮胜出,2不可能在第二轮胜出,4不可能在第三轮胜出)所以实现了一个类似于线段树,可以查询每个区间前i个实力的人有多少,所以直接对每个数向上层子树询问即可。个人中最厉害的,考虑一个树形结构,所以一个人能不能获胜可以看作是他能不能赢过当前子树的其他人。自己做的时候基本没啥思路,太菜了,看了大佬的代码之后懂的。编号第一小的跟第二小的比,编号第三小的跟第四小的比。2.在当前区间比他大的数不能超过k,不然也无法胜出。个数据,代表每个人的实力,并且给出的序列是1到。

2024-11-20 17:31:21 339

空空如也

空空如也

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

TA关注的人

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