- 博客(25)
- 收藏
- 关注
原创 单调栈:Round106F题题解
也就是ar<al,对于这种情况,也就是r到l之间都得小于al,al是一个答案,那么对于这个ar会不会有第二个al?为什么,从l往右r到l之间没有答案了,往左呢,如果要合适,那么al左边的要大于al,因为此时al在中间嘛,但是这样子al和当前al左边的也会大于ar,不成立了。在这种情况下,一个ar只有一个合法的al,并且中间只能小于不能等于;由于al和ar守住了,中间的值大小不会影响后续,我们可以出栈,直到ar<al,一个单调递减的栈建立了,并且al和ar要有一定距离,我们栈不直接存入值,而是存入位置。
2025-08-30 16:02:27
217
原创 二分图模板(棋盘覆盖)染色图
他准备将罪犯们在两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。公务繁忙的 Z 市长只会去看列表中的第一个事件的影响力,如果影响很坏,他就会考虑撤换警察局长。罪犯之间的怨气值如下面左图所示,右图所示为罪犯的分配方法,市长看到的冲突事件影响力是 3512(由 2 号和 3 号罪犯引发)。那么,应如何分配罪犯,才能使 Z 市长看到的那个冲突事件的影响力最小?
2025-08-29 23:37:23
431
原创 并查集(思考题目,理解题目)还是得动手画,牛客周赛Round 91 ,D;
第二行 nnn 个整数,第 iii 个数为 ai(1≤ai≤2×105)a_i(1\leq a_i\leq 2\times 10^5)ai(1≤ai≤2×105),表示数组元素。而不是靠人脑一直推下去,不现实。对于find函数:如果x的父亲节点是他自己,那他就是根节点(祖宗节点),不然他的祖宗节点就是他父节点的祖宗节点(他肯定和他父亲同祖宗吧),这样就可以找到最初的祖宗节点。我们只处理根节点,根节点有和其他点天然连成线段,我们只需要加上一个根节点,其余同值的根节点,自然可以通过次节点到达这个根节点。
2025-05-01 17:09:03
502
原创 种类并查集
我们默认会并查集。好了,先进入一个情景,我们通常在使用并查集实现关系的查找,比如祖宗亲戚,这种关系是单一的。我们常说,敌人的敌人是朋友,朋友的朋友是朋友;所以我们跟敌人的敌人站在同一边,也就是同一个数组中。这里我们需要一个假想敌,i和i+n是敌对的关系。如果a和b是敌人,那么a和b+n在同一边,那么他们有共同的根节点(祖宗)。b和a+n在同一边。如果他们是朋友,那么a和b在用一边,他们有共同的祖宗。a+n,b+n.同理可得。这是构建关系的过程。
2025-02-27 17:36:00
741
原创 字符串专场(进制哈希)
这样的话,我们可以采用哈希进制,每一位的字母就是这一位的进制,从这样算出一个字符串的值,这样的话即使字符串里面的字母搭配相同但是也会因为排列不同出现值不同的情况。那么就符合我们要的搭配相同但是排列不同也算不同。那么其实就是需求每一个字符串的不同值,一开始想到个数相同的对比ascall码值的和,但是想想ba和ab,同字母个数也同值,但是其实不同,这就是哈希冲突。题目很简单,如果暴力去对比肯定爆掉。
2025-02-21 19:17:34
247
原创 蓝桥杯之异或和之和
或者说,对于每组满足 1≤L≤R≤n1≤L≤R≤n 的 LL, RR,求出数组中第 LL 至第 RR 个元素的异或和。其次我们要计算异或和之和,此时我们可以用乘法原理,i位上,如果有一个1和0,那么这一位做数,我们可以加上2^i,如果有多个,我们可以加上多个,那么其实就是组合,n个0和m个1,可以组合出n*m个,那么我们可以便捷计算出这一位的贡献。就暴力而言,我们可以计算异或前缀和,然后截取每一段后加入答案,但是这是是n的平方,并且是1e5,那么不可行。对于 3030% 的评测用例,n≤300n≤300;
2025-02-21 19:15:58
214
原创 蓝桥杯之买瓜(dfs)
输入的第一行包含两个整数 nn,mm,用一个空格分隔,分别表示瓜的个数和小蓝想买到的瓜的总重量。第二行包含 nn 个整数 AiAi,相邻整数之间使用一个空格分隔,分别表示每个瓜的重量。以及利用后缀和,在拿到这个瓜后,我们加上后面所有瓜的质量,以此达到简便。小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。对于所有评测用例,1≤n≤30,1≤Ai≤10e9,1≤m≤10e9。后来看了题解,原来要把大的瓜排前面,这样才能尽快增长,到达m。小蓝希望买到的瓜的重量的和恰好为 mm。
2025-02-21 17:04:04
367
原创 思维秒秒题之cf——div2——997——A题,B题,c题
例如,[1,2,1,3,1,2,1] 、 [5,5,5,5] 和 [4,3,3,4] 是回文,而 [1,2] 和 [2,3,3,3,3] 不是。我们再加上一个2来刷,末尾加2,意味着1能刷的只有n-3,2能刷的,n-1(首个1,末尾加的1在2前面)-2(自然排列的1和2)-1(末尾自己)=n-4;然后我们就可以1+x+1,这就是我们回文数,但是如果有n个数字,除去收尾另外的1,只有n-2个,以及自然排列的1,可以刷n-2(最前面的两个1)-1(最后面的1)=n-3;我们注意是子序列,不是子串,可以断开的。
2025-02-09 15:15:28
332
原创 拓扑序列(基础模板)
实现思路是没有前置的项目(前置已经全部实现也是没有前置)可以开展,在图中就是入度为0的顶点,这种顶点可以去掉,那么与之相连的顶点中入度会减少,当这些顶点入度也为0时候,那么他也可以去掉。一个大项目会有很多小项目,比如实现1后才可以实现2,实现3后也可以实现2.。在这种情况下,我们需要一个合理的顺序来实现项目。eg:项目a前置为b,项目b前置为c,项目c前置a。重复上述两步,直⾄全部顶点均已输出,或者当前图不存在⽆前驱的顶点为⽌,后⼀种情况说明。(1)在有向图中选⼀个没有前驱(入度为0)的顶点且输出之。
2025-01-07 21:56:53
185
原创 蓝桥杯每日一题之石子合并
在桌面从左至右横向摆放着 NN 堆石子。每一堆石子都有着相同的颜色,颜色可能是颜色 00,颜色 11 或者颜色 22 中的其中一种。现在要对石子进行合并,规定每次只能选择位置相邻并且颜色相同的两堆石子进行合并。合并后新堆的相对位置保持不变,新堆的石子数目为所选择的两堆石子数目之和,并且新堆石子的颜色也会发生循环式的变化。具体来说:两堆颜色 00 的石子合并后的石子堆为颜色 11,两堆颜色 11 的石子合并后的石子堆为颜色 22,两堆颜色 22 的石子合并后的石子堆为颜色 00。
2025-01-06 20:10:06
376
原创 蓝桥杯每日一题之统计子矩阵(二维前缀和加滑动窗口)
对于 100%100% 的数据, 1≤N,M≤500;给定一个 N×MN×M 的矩阵 AA, 请你统计有多少个子矩阵 (最小 1×11×1, 最大 N×M)N×M) 满足子矩阵中所有数的和不超过给定的整数 KK?其实就算一个简单的公式:sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];对于 70%70% 的数据, N,M≤100N,M≤100.对于 30%30% 的数据, N,M≤20N,M≤20.大小为 1×11×1 的有 10 个。
2024-12-05 17:05:36
477
原创 中国剩余定理
这里一步一步找到适合的数,这个数的每一次增加k,都是前面i的一起的最小公倍数,加完k,依旧是不影响对于前面i的取余结果。初始化这里我自行完成第一次,后面走循环。无非是一乘得n,一除得m,一取余得m1,累加m1*m;第二解释:运用定理,官方题解有推论,我这里不细说(因为看不懂)
2024-11-27 21:12:52
282
原创 差分模拟(入门题型)
此时sumb[1]到sumb[4],都为1,我们将其加入对于的a[i],sumb数组记录的就是每一个位置的具体变化。sumb[5]开始为0,也就是a[5]开始加0。b数组其实是记录一段包含它的区间的变化,sumb数组是b数组的前缀和数组,我们举例,b[5]只能影响sumb[5]以及后面的sumb.i*−1] 之间的所有的房间线索都被解开时,该房间的线索才能被解开。假如我们想对a数组中a[1]到a[4]都加1,那么我们设置b[1]=1,b[5]=-1;>1) 的房间,只有当编号为 [1,i−1][1,
2024-10-22 22:10:56
310
原创 单调栈,模板题入手。
栈我们都知道,是一种先进先出的数据结构,不严谨地说可以认为是一种操作受限的数组。单调栈这里的单调二字是指明存储的规则。栈底到栈顶的数据是单调有序的,不减或者不增.我们这里从板子题入手。
2024-09-19 20:34:52
682
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅