- 博客(50)
- 收藏
- 关注
原创 Codeforces Round #816 (Div. 2)补题(A-E)
A - CrossmarketB - Beautiful ArrayC - MonoblockD - 2+ doorsE - Long Way Home
2022-08-30 20:20:35
580
原创 Codeforces Round #812 (Div. 2)补题(A-E)
A. Traveling Salesman ProblemB. Optimal ReductionC. Build PermutationD. Tournament CountdownE. Cross Swapping
2022-08-07 22:52:17
455
原创 Codeforces Round #811 (Div. 3)补题(A-G)
A.Everyone Loves to SleepB.Remove PrefixC.Remove PrefixD.Color with OccurrencesE.Add Modulo 10F.Build a Tree and That Is ItG.Path Prefixes
2022-08-04 11:48:27
551
原创 CodeTON Round 2补题(A-E)
A.Two 0-1 SequencesB.Luke is a FoodieC.VirusD.Magical ArrayE.Count Seconds
2022-08-03 09:22:37
309
原创 同余最短路学习笔记
给n个整数x1,x2,x3....xn,问与这n个整数能凑出的数(形如a1x1+a2x2+a3x3....anxn=num)(a>=0)相关的数的问题。
2022-07-31 10:47:59
151
原创 最小费用最大流学习笔记
1给一个n个节点m条边的图,每条边存在容量和单位费用,有一个源点和一个汇点,求源点到汇点的最大流的同时保证每条边的流量乘以单位费用之和最小
2022-07-29 22:58:32
290
原创 2-SAT学习笔记
用于处理相关问题:有n个bool类型的变量,给定m组二元关系,代表n个bool变量中两个bool变量的关系。一般要求判断是否有解,若有解输出赋值
2022-07-27 00:11:52
194
原创 Codeforces Round #810 (Div. 2)题解(A-C)
A. Perfect PermutationB.PartyC.Color the Picture
2022-07-25 09:43:29
1003
原创 点分治学习笔记
1多用于处理树上规模较大的路径信息问题2对于一棵以root为根节点的树,存在两种路径,一种是经过root的路径,一种是不经过root的路径3因此对于一棵以root为根节点的树,只去考虑经过当前根节点root的路径,又可以分成两种路径,一种为有一端是根节点的路径,也就是root向下遍历形成的一条链,另一种是根节点在路径中而不在两端的路径,这种路径能够通过两条不同的第一种路径合并得到。4处理外以root为根节点的树后,割去root,形成了多棵子树,再次设定根节点,根据3进行分类讨论计算答案。...
2022-07-23 09:08:28
129
原创 虚树学习笔记
将一颗大树浓缩成小树,因为在一棵树中,有些信息是不必要的,只需要关注那些关键信息,保留原有的父子关系,从而方便树形dp之类的信息维护,降低时间复杂度。
2022-07-20 23:40:41
186
原创 数位dp,区间dp,状压dp简单笔记
1数位dp主要用于寻找区间[l,r]中满足一定条件的数的数量2先找到[1,r]中满足条件的数的数量,再减去[1,l-1]满足条件的数的数量,类似于前缀和3dp的数据一般由一个二维数组构成,第一个一般为当前的位数,第二个记录状态,比如前一位的数字(可以用于寻找某些不允许某数字在一起的情况),用一个flag记录每次选取的数是否贴着r的当前位上的数走,主要是为了保证选出来的数小于r,比如r=785,如果一个三位数前两位是78,那么个位数必然小于5,如果前两位为77,那么各位就可以随便取......
2022-07-07 00:03:52
378
原创 高斯消元简单笔记
1将方程组记录成矩阵形式,通过矩阵变换,得到一个上三角的矩阵,这样就方便求解2本文记录了异或,整数,浮点数,和模意义的方程组3主要步骤为:(1)寻找当前列最大的一行,换到当前行上去,再将当前行以下同列的元素全都变为0(2)判断消元后的结果,如果方程组右边的数为0,而左边的数为0,说明无解。如果有效的方程的数量和小于未知数的数量,说明有多解,有自由变量。如果有效方程的数量等于未知数的数量,方程有唯一解...
2022-07-06 15:11:00
267
原创 ST表简单笔记
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1用于解决区间查询可重复贡献的问题,比如求[l,r]区间的最大值或最小值,而求和不是可重复贡献问题。2利用倍增思想,如果只是查询,速度应该是比线段树快3一维st表一般用一个二维数组表示,第一个下标表示区间的左端点i,第二个下标j表示i+2^j-1,即右端点。......
2022-06-30 23:35:57
402
原创 CodeCraft-22 and Codeforces Round #795 (Div. 2)(A-D)题解
A. Beat The OddsB. Shoe ShufflingC. Sum of SubstringsD. Max GEQ Sum
2022-06-01 18:35:37
260
原创 Educational Codeforces Round 129 (Rated for Div. 2)(A-E)题解
A. Game with CardsB. Card TrickC. Double SortD. Required LengthE. Labyrinth Adventures
2022-05-25 20:04:08
445
原创 Kuhn-Munkres(KM算法)简单笔记
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1主要用于解决带权二部图匹配问题。2主要步骤:(1)让左右两边图的点有一个顶标(类似于权值),这里设成lval和rval,左边顶标初始化为与之所连的边的最大权值,右边顶标初始化为0,从而始终满足lval[i]+rval[j]>=dis[i][j]。(2)生成这个二部图的导出子图,导出子图的条件满足lval[i]+rval[i]==dis[i][j],在这个图上用匈牙利算法寻找增广路,如果找到,就实现匹配。(3)如果
2022-05-22 11:35:05
1154
原创 匈牙利算法简单笔记(无权二部图最大匹配)
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1用于解决二部图匹配相关问题2算法实现主要依靠不断寻找增广路增加匹配增广路概念(来自百度百科)若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径(举例来说,有A、B集合,增广路由A中一个点通向B中一个点,再由B中这个点通向A中一个点……交替进行)。3个人理解假设有左半图和右半图,两个图中的点希望匹配,增广路就是从一条没被匹配的边
2022-05-21 15:50:28
257
原创 Dinic算法简单笔记
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1主要用于求网络最大流问题思路1存储图,每条边可以看成一个水管,有容量和流量,流量不能超过容量循环:2构造层次网络(level gragh)和残留网络(还有多少水可以流,容量减流量)3寻找到一个阻塞流,就是不能流更多的水的路径,(最大流是阻塞流,阻塞流不是最大流)4如果到达不了终点,循环就结束了5更新残留网络,正向流量加相应的值,答案加相应的值,反向路径的流量减去相应的值(这意味着残留网络中他的权值变大,变化
2022-05-18 23:58:12
384
原创 可持续化线段树简单笔记
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1用于储存每次修改后所有状态的线段树2不需要存储整颗树,每次修改只要新增单独的链即可3区间修改不再用pushdown操作,而是选择在查询的过程中下放lazy标记代码实现一,树的存储struct node{ int l,r,sum,lazy;}tree[maxn<<5];int tot;int root[maxn];//记录每棵树的根节点二,建立一棵以root[0]为根的树int bui
2022-05-10 10:49:13
133
原创 可持续化权值线段树简单笔记
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1可以存储[0,n]次添加后的所有状态的线段树2可以用于比如查找某个区间的第k大的值3在每次修改时,不是创建一棵新的树,而是在原有树的基础上创建出一条新的链。代码实现1树的存储const int maxn=1e5+10; struct node{ int l,r,sum;}tree[maxn<<5];int tot;//节点编号int rak[maxn];//用于存储离散化int root[
2022-05-09 11:38:10
108
原创 关于权值线段树简单笔记
萌新一枚,借鉴了许多大佬而总结下的笔记,可能有瑕疵或者错误,望指正。1权值线段树和普通的线段树不同,用于记录一段区间中数的数量。2主要用于寻找一组数据中第k大的数字代码实现:一,存储int tree[maxn<<2];(用普通的整形数组存储就行,节点的左端点和右端点在遍历的时候自然就有了,另外这么写不需要建树了,直接就有了一个现成的空的树)二,更新节点void update(int l,int r,int x,int p)//x是添加的数,意味着x的数量加一
2022-05-08 19:24:03
198
原创 离散化简单笔记
将无限空间中的一组数据保留相对大小,映射到有限的空间中。1可以有重复数字将数组排序,原数组的元素在排序后的数组中找到第几个,这个排名就是离散化后的元素输入数据int a[N];//记录原数组int b[N];//离散化后的数组for(int i=1;i<=n;i++){ cin>>a[i]; b[i]=a[i];//方便二分查找}离散化int a[N];//记录原数组int b[N];//离散化后的数组void run(){sort
2022-03-07 22:51:42
80
原创 字典树简单笔记
用于高效率存储字符串或者01二进制等字符串的存储(以全是小写字母为例)int trie[maxn][26];//用来存储每个节点的下一个节点并且记录该字母是否存在//第一个数代表节点编号,第二个记录代表每个字母bool color[maxn];//用于判断每个节点是否为字符串的结尾。int tot=0;//代表节点编号string a;//记录字符串void insert(string a){ int node=0;//根节点 for(int i=0;i<a.si
2022-03-07 21:10:52
126
原创 生日礼物简单题解
题目来源:[SCOI2009]生日礼物 - 题目 - 黑暗爆炸OJ原题:Description小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。 小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,小西希望这一段彩带中能包含所有种类的彩珠。同时,为了方便,小西希望这段彩带尽可能短,你能帮助小西计算这个最短的长度么?彩带的长度
2022-03-01 22:06:14
273
原创 Largest Common Submatrix
题目来源:Largest Common Submatrix - 题库 - 计蒜客题意:有两个大小相同的矩阵,求两个矩阵的最大相同子矩阵,数的范围是1到n*m,没有重复题解思路:对于每个数,得到这个数在第一个矩阵和第二个矩阵的坐标差,用坐标差形成一个新的矩阵,在这个矩阵中寻找元素相同的最大子矩阵。代码实现:#include <iostream>#include <algorithm>#include<string>#include<queue&
2022-03-01 11:38:18
490
原创 森森旅游的简单题解
原题:好久没出去旅游啦!森森决定去 Z 省旅游一下。Z 省有n座城市(从1到n编号)以及m条连接两座城市的有向旅行线路(例如自驾、长途汽车、火车、飞机、轮船等),每次经过一条旅行线路时都需要支付该线路的费用(但这个收费标准可能不止一种,例如车票跟机票一般不是一个价格)。Z 省为了鼓励大家在省内多逛逛,推出了旅游金计划:在i号城市可以用1元现金兑换ai元旅游金(只要现金足够,可以无限次兑换)。城市间的交通即可以使用现金支付路费,也可以用旅游金支付。具体来说,当通过第...
2022-02-28 17:26:34
652
原创 Perform the Combo 简单题解
题目来源:Problem - 1311C - Codeforces原题:time limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou want to perform the combo on your opponent in one popular fighting game. The combo is the str.
2022-02-27 23:01:26
7058
原创 Moving Points简单题解
题目来源:Problem - F - Codeforces原题:F. Moving Pointstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere arennpoints on a coordinate axisOXOX. Theii-th point is located at the i...
2022-02-27 11:16:17
557
原创 Construct the Binary Tree简单题解
题目来源:Problem - E - Codeforces原题:time limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given two integersnnanddd. You need to construct a rooted binary tree consisting ofnnvert...
2022-02-27 00:11:53
118
原创 KMP算法简单笔记
(简要笔记,仅供参考,可能存在瑕疵或者不正确的地方,望指正)用于字符串匹配1获取nx[N]数组int nx[N];//记录第i个字符前的最长相等的前后缀。string s;//目标字符串void getnx(){int i=0,j=-1;nx[0]=-1;while(i<s.length-1){ if(j==-1||s[i]==s[j]) nx[++i]=++j; else j=nx[j];}}2kmp算法string s,s
2022-02-21 17:55:58
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人