自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Y2期末测试

本次模拟未达到目标,第一题做题时间太长了,随后又在第二题上浪费时间,导致后面的题都没来及看,一二题是思维题,后面的题也没想到有什么好的算法,还是要多练。

2024-06-09 11:34:11 549 1

原创 最小生成树

对于一张无向连通图G,它的一个连通子图,含有图中全部n个顶点,但只有足以构成一棵树的n-1条边,那么就称这个子图为G的生成树。题目描述:给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。所以边判断结束后终止(或加入n-1条边之后停止)如果加上这条边成环了,则不要这条边(并查集)边的权值加起来最小的生成树。3.依此加回去(无环)逐条边加入(从小到大)1.去除所有边,留点。加入边的时候进行判断。

2024-05-25 17:46:27 277

原创 带权并查集

之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学。初始化f[i]=i,num[i]=1,num[i]表示i点所在的集合的数量,需要注意的是,一个点所在的集合的点的数量保存在其根节点中。对于每个询问指令 Q1 a b,如果 a 和 b 在同一个家族中,则输出 Yes,否则输出 No。

2024-05-18 18:01:01 408

原创 USACO18DEC模拟赛

N 头牛排队吃草,编号为i的奶牛来排队的时刻为ai,吃草的时长为ti。求所有奶牛在队伍里等待时间的最大值。正解:先按来到草地的时间排序,再利用优先队列,每次出队时都用当前时间减去入队时间更新最长等待时间,注意如果队列为空但还有奶牛没来时要直接把奶牛加进去,不能让队列为空。正解:先将牛到达的时间排序,通过判定 按此时间划分奶牛所需要的车辆数是否大于M 来检查这种方案是否合法,二分奶牛中的最大等待时间的最小值。当最后一头乘坐某辆车的奶牛到达的时候,这辆车就可以发车了。求等待时间最长的奶牛等待的时间的最小值。

2024-04-27 18:27:24 275

原创 字符串算法习题分析

假设我们已经求出mn[1]到mn[i-1],在求mn[i]是,分为两种情况,如果mn[nxt[i]]!题目描述:定义字符串 Q 是 A 的周期, 当且仅当 Q 是 A 的一个 proper 前缀并且 A 是 Q+Q 的前缀(不一定要是 proper 前缀),若这样的字符串不存在,则 A 的周期为空,给出一个串,求出它所有前缀的最大周期长度之和。题目描述:给定一个长度为 n 的字符串 s,由小写英文字母组成。对于两个给定的字符串 s 和 t,假设 S 是 s 的不同字符的集合,T 是 t 的不同字符的集合。

2024-04-20 16:07:57 704

原创 KMP进阶

此时,问题变成了:找到一个最小的区间,内部同时包含了一个一类区间和至少一个二类区间。随后,我么可以配合二分使用。用vector数组l1,l2,r1,r2,第一步,通过枚举得到了一类区间 l1[i],r1[i],第二步,第二类区间(l2,r2) ,在保存的第二类区间中找到最接近的l1[i] r1[i],第三步,比l1[i]大的r2,找到最接近的l1[i] r1[i],第四步比l1[i]小的r2,找到最接近的l1[i] r1[i],一类区间和二类区间都确定好了以后,就能得到答案区间,随后求字典序最小的。

2024-04-13 17:08:41 414

原创 KMP算法

t[next[i]]和t[i-next[i]+1]t[i-next[i]+2]…如果无法移动,向右移动1位。因此,我们现将Next数组求出来,然后从后向前求出每个前缀i在字符串中出现的次数cnt[i],根据上面的结论我们递推出cnt[p[i]]+=cnt[i]上图中,我们可以在判断t[next[next[i]]+1]是否等于t[i+1],如果相等则说明next[i]=next[next[i]]+1。如果t[Next[i]+1]==t[i+1],那么Next[i+1]显然应该等于Next[i]+1.

2024-03-30 16:10:37 555 1

原创 Codeforces Round 719 (Div. 3) 补题报告

题目描述:给定一个字符串S,仅包含字符.与∗分别表示空地和绵羊每次操作可以将任意一只绵羊往左或者往右移动一格,只要目标位置存在且为空地要求将所有绵羊弄到一起(任意两只绵羊间不能空地)问最小的操作数。靠拢的步数是最少的,记录以每个位置的字符*为中心需要左边移动多少,右边移动多少,然后取左右边移动的和最小即为答案。题目描述:构造一个n×n的矩阵,使得相邻两个数的差值>1,且1到n^2内每个数都在矩阵中出现一次。题目描述:有n个由(1,0)组成的数,每次可以(l-r)的元素和,判断第k个0在那个位置。

2024-03-22 22:37:28 972 1

原创 哈希冲突

假设原串长度为K,则K=len*cnt,其中len是最小循环节长度,cnt是循环次数,我们可以枚举K的质因子p,如果K/p也是循环节,就把p除掉,这样重复下来就能得到len了。假设模数p为1e9,n为1e7时,代入到上面的式子中,会得到总错误率约为1%,而通常情况下一道题目有20组数据,1-(0.01)^20约为20%,20%的错误率是不可忽视的。假设我们用哈希算法,通过哈希值进行了n次比较,每次比较的错误率为1/M,则总错误率为。模数:1e9+7,998244353。底数:128,131,26,31。

2024-03-16 16:35:02 318 1

原创 字符串哈希

但是如果原数据是300和700的话,那么300%10=0,700%10=0,这时,就会发生哈希冲突。此时,300与700冲突。字符串哈希:将字符串每个字符转换为 ASCII码,得到一个 128 进制数,将其转为 10进制数,即为字符串哈希值。哈希就是把任意长度变换为固定长度的输出,这也称为哈希值。哈希通常被用于密码学,因为无法通过哈希值计算出原数据。:从冲突位置向后找空余的地址,如果到尾部则从头开始,直到找到空间存放。哈希函数:hash(key)=key%:在冲突的位置开放地址。

2024-03-08 22:36:53 315 1

原创 01分数规划

第二种。

2024-01-30 17:03:55 916 1

原创 矩阵及矩阵快速幂

由m×n个数排列而成的,称为m×n矩阵。

2024-01-13 11:17:39 395 1

原创 数论:欧拉函数

对于两个互质的正整数n,m,满足。对于任意两个正整数 n,m,满足。1到n中p的倍数,有。数论函数一般来说定义域是正整数,除非特殊要求。如果表达式为真,则等于1,反之等于0。(n):表示1到n中与n互质的个数。则1到n中剩余的数即为互质的数。(n)=n-1 (n为质数)(n) (n为奇数)1到n中q的倍数,有。

2024-01-06 13:16:41 920 1

原创 逆元(数论)

a,b,...] a,b等多个数的最小公倍数,即lcm(a,b.....)(a,b,...) a,b等多个数的最大公约数,即gcd(a,b.....)a^(−1)=a^(p−2)( mod p)(p 为质数,p∤a,a∈Z)若 1 ≤ b < m 则称 b是 a对模 m的最小正剩余。性质2:若 a mod p=x,a mod q=x,(p,q)=1,则 a mod pq=x。

2023-12-30 15:08:09 946 1

原创 拓扑排序与动态规划

(数据保证输入数据符号生物学特点,且不会有重复的能量流动关系出现)1<=N<=100000 0<=m<=200000题目保证答案不会爆 int。将入度为0的点如果有初度,那么f数组初始化为1,其余的f[i]表示能到达它的节点的f[i]如果一个图是有向无环图(DAG图),那么我们可以获得它的的拓扑序列,无向图没有拓扑序列。本题采用动态规划的思想,用f[i]表示编号为i的点可到达的路径数量,我们发现B和C的入度都为0,那么删除谁都一样,我是先删B再删C。现在给你n个物种和m条能量流动关系,求其中的食物链条数。

2023-12-23 14:12:14 381 1

原创 链式前向星

1. head->NULL 初始状态无元素,表示为NULL。1.树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,他们的距离和一样。2.把两棵树通过一条边相连,新的树的重心在原来两棵树重心的连线上。3.一棵树添加或者删除一个节点,树的重心最多只移动一条边的位置。用ver数组保存元素的值,nxt数组保存元素的下标。4.一棵树最多有两个重心,且相邻。如数列 1,2,3,4。在链表的头部插入元素。

2023-12-16 16:08:18 329 1

原创 Codeforces Round 900 (Div. 3) 补题报告

给定一个大小为n的数组a和一个整数k,判断a中是否存在一个非空子段,其中k是在该子段中出现的次数大于该子段中任何其他整数出现的次数的数。给定一个大小为n的严格递增数组a,要求对于每个i(1<=i<=n-2),3*ai+2不能被ai+ai+1整除。l1=1 ,rk=n ,li<=ri 且1<=i<=k , li=ri-1+1且2<=i<=k。只要x在前k个数的和,还有后k个数的和中间,那么选出k个不同的整数,他们的和一定为x。2.让a=min(x,ri+li-x),b=max(x,ri+li-x)

2023-12-09 11:46:32 357

原创 树状数组(进阶)

让l到r的区间内都加上k,实则运用查分思想,让树状数组l到n都加上k,r+1到n都减去k。接下来一行 n 个用空格隔开的整数 a​i​​,0≤a​i​​≤10​6​​。找出f1到f[i-1]的最大值,再找出f1到fn的最大值,即为答案。第一行:输入两个数 n,q,表示给定数组的长度和操作数。第一行:输入两个数 n,q,表示给定数组的长度和操作数。:将a​i​​ ~ a​r​​ 每个数都加上 k;:将a​l ~ a​r​​ 每个数都加上 k;给定N 个数,求这N 个数的最长上升子序列的。

2023-12-02 13:12:58 362 1

原创 树状数组(入门)

给出一个a数组:1.将a​i​​加上 x;2. 求a​l​​+...+a​r​​的值树状数组就可以实现改变某一个元素的值和求区间前缀和,以树的形式实现时间复杂度为O(n log n)

2023-11-25 14:05:45 333

原创 KDY十一月月赛入门赛第一场补题报告

算法还应熟练掌握,尤其是二分。

2023-11-18 15:05:55 46 1

原创 Codeforces Round 895补题报告

注重思维能力的提升。k&plus;k&plus;k&plus;

2023-11-18 14:28:26 43 1

原创 第三次课ST表

剩余的数字将形成一个新的整数。)和整数 m(如果整数包含 n 位数字,则 m 不会大于 n)。的区间最大值拆分成区间从i开始,长度为2^(j-1)的区间最大值和区间从i+2^(j-1)开始,长度为2^(j-1)的区间最大值的最大值。求区间[l,r]的最大值可以分成去区间[l,l+2^k-1]的最大值和区间[r-2^k+1,r]的最大值的最大值。动态转移方程: f[i][j]=max(f[i][j-1],f[i+2^(j-1)][j-1]);也就是求max(f[l][k],f[r-(1<<k)+1][k])

2023-11-11 12:02:40 48 1

原创 第二次课优先队列和重载运算符

删除根节点,将最后一从左往右数最后一个元素移动到根节点上,如果此时满足小根堆的特点,就说此时是一个小根堆,如果不满足,就将它的两个子节点中小的那个子节点进行交换,重复上述操作,若满足小根堆得特点,就停止操作。创造一个结构体,分为三个值,x为a数组的下标,y为b数组的下标,val为a[i]+b[j]的和,将a数组和b数组从小到大排序。将a[i]+b[j]的值入队,如果不满足,a[i]+b[j]如果小与队首元素,将队首元素出队,先枚举n^2个两个数的和,排序后,创造一个大根堆,若大根堆中的元素个数小与n,

2023-11-04 12:59:55 35

原创 第一次课STL

2023年10月13日本节课主要讲了STL,包括栈、队列、map、multimap、unordered_map、set、multtiset、unordered_set、max、min、sort、swap、lower_bound、upper_bound、vector....

2023-10-27 21:35:33 36

空空如也

空空如也

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

TA关注的人

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