寒假训练计划打卡

暑假暂定计划

  1. CF至少两天一把(vp或者正式赛)
  2. 牛客每周的小白和寒假训练赛
  3. 每周的atcoder
  4. 坚持每天至少五个题

目标

  1. CF 1900
  2. 图论入门+一点点精通
  3. 字符串入门
  4. 数据结构入门
  5. 概率期望入门

打卡总结

2022.12.7

  1. 二分图可以用来判断奇环,如果这个集合中不满足二分图的性质,那就是奇环
  2. 树上差分可以从根节点开始进行差分,而不一定要从叶子节点开始,也就上要学会灵活的转换

2022.12.8

  1. 最小路径覆盖(一个点只能经过一次):先将点进行拆分为Vx和Vy,这样一定是二分图,然后匈牙利进行匹配,ans=n-匹配数
    路径输出的话,可以采用正序输出,也就上看谁的Vy点没有被匹配,那这个人就一定是这条路径的起点
  2. 可相交路径:原理类似,只是需要先使用floyd处理一下连通性(还不是很懂)
  3. 二分图对点的划分:只要能满足同一个集合内的点不能相互达到就可以了
  4. 二分图性质:点覆盖,边覆盖,这些概念有点印象了,就是还不太会,不看题解不会写

cf 779 3题败北(虽然只认真写了40min)。
教训:看到异或这些位运算,要想到从位上进行操作

2022.12.9

  1. 字典树:查询公共前缀
  2. 01字典树:查询异或的最值

cf 781 交互题大致就是二分和按位处理

2022.12.10

1 gcd按值域进行处理
2 gcd按二进制位进行处理

abc坐牢实况:
感觉状态差到极点了。
D题dp,我竟然爆索去了,最后想到二分,又因为没有输入数组,卡了30min
E题纯模拟,我不会。啊啊啊,我擅长的模拟。
有一些注意的地方,就是删除数据的时候最好使用迭代器,不然multiset会把多个一样的都删去

3 topsort可以用来确定大小关系,并判断是否满足条件

2022.12.11

1 用vis数组标记一下,可以删去这个数在trie中出现的痕迹,但是又不对树的结构进行修改
2 直接在树上异或,就可以查询所有的异或值,因为有些东西会相互抵消
3 两个不相交的区间,前后找一次就可以了
4 km算法要用bfs,才是真o3。必须有完备匹配才能用,也就是每一个人都能找到对象
5 最少路径覆盖全部的点,必须开两倍,其他的貌似是不用开两倍的

2022.12.12

停电的一天,难受
1 字符串最长回文,连续用区间dp,不联系用dfs
2 CF的玄学运行时间,不懂为什么呀
3 怎么将树上任意两点都转换成链,最简单的就是直接建立n棵树,每次在以你为根节点基础上进行靠近你就行了
4 找质因子时,一定要质数筛,而且不要筛多了,sqrt(max)+1
5 gcd(a+x,b+x)==gcd(a+x,b-a)

2022.12.13

1 能用dinic,就不用ISAP
2 网络流真的难,几个板子学一天
3 关键边,走残图,起点能走到这条边的左边,这条边的右边又能走到终点,并且这条边的权值为0,那就是可以的边
反向走的时候直接看反向边就可以了
4 上下界的问题,首先建立超级起点和终点,根据min,max-min,找出流入和流出的关系,从而判断可行性
最大流 判断完之后,S=s,T=t,然后ans+dinic()
最小流 判断完之后,S=t,T=s,然后ans-dinic()
5 线段树+差分,或者说是树上差分, 可以维护二维差分数组,可见例题 P1438 无聊的数列
6 记住了,cf都是思维,没有想的那种打表

2022.12.14

1 双向边,只能走一次,那就让两边都只能走一次就可以了,如果两边都走了,也就相当于抵消了(起点相同)
2 判断路径的条数,明显的网络流
3 网络流里面是不好用路径的长度这一个概念的。可以用分层图代替路径的长度,还有边权重
在上一步的残图中进行走图就可以了。分层图很强

2022.12.15

1 拆点:因为这个点要被作为中转点,而不是终点。但是又想像边那样保证只经过一次,所以要把一个点拆成一条边,就可以保证值经过一次。
跳向下一级,要使用后面的点,因为要先过滤杂质。

2 对天数有要求,可以进行分层图,反正就是需要巧妙建图

2022.12.16

1 01分数规划:求平均值最大,或最小的问题。一般是二分平均值,然后计算各个的权值,排序后相加,>=0即满足条件
2 割:即去掉一些边后,使得S与T不连通,这些去掉的边的权值和也就是割
3 双向图跑网络流,一般使得两条边的权值一样就可以了
4 能到达左边,不能到达右边,这条边才算做割去了。拆点的话也是一个道理,看这个点有没有被割去,或者可以看这条边是否为关键边

2022.12.17

打了一天饥荒,养了一天牛,没养成战牛,怒删游戏,不如来敲代码。

1 abc 四题,没事,我把我的图论题写出来了
2 cf 五题,人生第一次,上大分

2022.12.18

1 最小割:对集合的状态进行定义,然后将非法状态定义为inf的边,这样子就保证一定合法,然后再进行跑图
有时候需要反着来,总的减去MIN,就为MAX。最开始的时候,中间的边都是inf
分析清楚题目:会发现从右到左的边,确定集合,慢慢连边。网络流没有负边
也可以直接从S的点集合连向T。

(1).大致确定集合的状态
(2).连接非法状态的inf的边
(3).慢慢分析每个点,然后对集合进行连边。边的起点和终点有的时候是随意构成的
ps:不完全适用,但大部分都可以这样子进行分析
2 建边的时候有的时候确实是双向边,但要注意会不会重复建边,重复了的话,也就是只能建立两条单向边
3 最小生成树,每次加入一个点,总共操作n-1次,每次选最小的边就可以了。
ps:等效于删去点的操作,只是不用管是删去了那个点,反正每一次都只用一个点就可以了

2022.12.19

1 平面图:一句话来说就是任意两线段只在端点处相交,大部分图都是的,稍加判断一下就可以了。
性质:最大流 = 最小割 = 对偶图最短路
转换成对偶图,也就是把面看成点,然后进行连边,跑最短路
判断一下哪里作为起点,哪里作为终点,可以把题目要求的起点和终点隔开就行了
2 最小割子图的密度问题,建边add(S,i,m,0),add(i,T,m+2g-in[i]),然后判断mn-dinic(mid)
3 CF大失败,不行,我得一天两把CF,我还没有上紫名的能力。

2022.12.20

1 abc--279--E撤销操作类型的题目,也就是反复在脑子里面模拟,然后看一下如果不要这一步,整个数组会变成什么样。
往往需要维护前缀和后缀,从而便于查找
2 启发式合并,也就是用vector暴力转移,每次把小的放在大的里面,时间复杂度是nlogn。
3 不要盲猜结论了,可以把想法写下来,但不要急着写代码。
没有绝对的把握,能优化就优化,特别是那种米脂复杂度的题目。
二分不要乱写范围,尽量小一点。
4 最少交换次数 = n - 循环圈个数

2022.12.21

1abc--278--D:用vis数组来进行延迟更新,太棒了。二分图的最大匹配里面学来的。
2 一个数字可以操作无限次的问题,完全背包问题。
3 不要太纠结问题的模拟,看清问题的本质,或者追着答案怎么计算来看题目。追着答案来看题目

2022.12.22

1.多个大小关系的表示是否合法,用topsort
2.采用中间点来代替多个关系
3.写图的时候,边数一定要搞大一点,1e6完全没有问题的。真的,一下子就忘了两倍空间了
4.dp转移,注意查找dp转移的代价,还有就算怎么从子状态-->现在的状态

2022.12.23

1.写了一个期望诈骗题,以为是又是期望概率的数学问题(我表示不会),结果不是,用树状数组维护最大值的和与最小值的数目
2 这么简单的构造,我竟然想用01字典树,关键是发现不行后,还傻傻的摆烂,幸好最后还是写出来了,真菜呀
3 这种看着就没什么规律的构造题,我要什么时候才会呀,特别是不是在数组里面,而是放在图上,或者是稀奇古怪的东西。
当然,第一要是就是先根据题目要求需要突破口,而不是去追究题目的各种离谱操作,先看题目要求,找一下有什么限制
4 真不行了,简单的dp也不会,就是从前面到后面进行转移呀
ps:状态好差呀,变得真菜,简单的dp没思路,简单的构造也不会,哭声,寒假在家真的好摆烂呀。

2022.12.24

1.已知正方形两个点,求剩下的两个点,275--C
2.删除一些数据,使得剩下的数和为一个给定的值,但是不知道大数据怎么处理呀
3.有的时候期望dp又不太一样呀,不是很懂啊
4.树中节点的度数,奇数的必须有偶数个,并且大于0,我竟然连这个性质也不太清楚
5.就题目重做,换了个方式,就想不到了,或者说联系不起啦

2022.12.25

1.扫描法进行判断,即将多段区间进行合并时,可以将其分为左端点和右端点,右端点进来的时候,就将左端点拿出去
2.构造题多次操作的问题,一定要将试验后的数据进行操作,而不是在最开始的基础上进行操作
3.非法边的流量还是需要稍加注意的,一般只连一段的inf边

2022.12.26

1.费用流中不要忘记建立反向边,权值为负数,和网络流中不太一样,网络流有的时候可以省略,费用流不可省略。
2.CF竟然能wa26,不是很理解
3.线性基,很神奇的算法,但还能理解
4.优雅永不过时,优雅的暴力更加强大

2022.12.27

1.鸽巢原理,连续多少个之后,一定会产生相同的,所以就看是否产生影响
2.处理全部区间的方法,在确定当前的区间后,定向查找前面区间的个数

2022.12.28

1.dp的缩小范围 查找
2.st表也可以用来查找区间的值,对于那种区间的累加的问题可以适用,很想线段树,但是好些一点
3.cf832--D,思路早就出来了,模拟能力不太行,模拟了一个小时,都没出来,呜呜呜!!!
4.今天是充实的一天,去年的寒假训营写了10题,虽然中途很想摆,但是坚持下来了,加油加油

2022.12.29

1.容斥原理小结,大概就是奇数加,偶数减,然后就是与gcd的各种求法
1-n中gcd(i,n)==1的数量,就是欧拉函数
2.CF--831--E,写了很久,最后很惊喜的出了

2022.12.30

1.这天好像没干啥,就vp了一把CF

2022.12.31

1.给你多个限制条件可以,从前面优先考虑,从后面优先考虑
2.gcd的变化,竟然还可以看余数

2023.1.1

1.模拟的优化,当时确实急了。也就是看有多少个圈,每个圈的贡献是2,但是如果已经贡献过了,那就不重复计算
可以优先预处理,然后进行模拟。

2023.1.2

1.看清楚题目类型很重要,有些题目真的很诈骗
2.原来正常的数组也是可以用哈希的,不止是要字符串

2023.1.3

1.最大流的最大费用和最小费用原理是相同的,只是最大费用的时候,边权需要使用负数进行存储
2.对边和点的流量进行限制,就可以构造出取了几次

2023.1.4

1.两个点之间,可以连多种不同的边,从而达到不同的效果
2.无源汇上下界可行流,ai=入-出,如果ai>0,也就相当于我进入的太多了,需要给别人一点
ai<0,也就是可以作为终点的点,谁可以流向我
3.有向完全图(竞赛图):一定存在一个哈密顿路径,每个强连通分量里面存在一个哈密顿回路,然后入度出度还有一定的大小关系。
还有就是看边,经常要判断i(i-1)和i(n-i)这两种东西,并且要先从大到小排序

2023.1.5

1.分层图有两种,一个是记录该点的所有状态,图只有一张,一个是建立多张平行的图,两种都有使用的范围
2.分层图不知道建立多少张图的情况下,可以使用while(1)进行一直建图
3.最小路径覆盖,每一次连边成功,就相当于把这两个点看成了一个集合,所以也就是n-匹配数
4.网络流记录路径,直接看是否有流量,然后记录上一个是谁就可以了

2023.1.6

1.昨晚CF的D理解错了,我以为1 6 5 4 3 2这种一长串的逆序也是满足要求的,不然就上分了。下次还是得看清题目。
2.餐巾计划问题,很像网络流中的减法问题,进行拆点,从而保证两者是平衡的,但是又一直可以向下进行传递。

2023.1.7

1.期望dp,一般从后面往前面推,但是从前与从后是都可以的,只是定义的状态不同,所以计算上面会后差异。
并且大多数时候是可以转移到自己的,所以直接将式子进行化简就可以了。例如:Favorite Dice
2.结果是不确定的,直接从前面开始转移就可以了,直接从i-1转移过来,并计算每一种事件发生的概率和期望Kids and Prizes

2023.1.8

1.E[a2]≠E2[a],OSU所以1次方和2次方需要分开维护。
2.直接算期望:每一种情况的贡献*每一种事件发生的概率
2.数论,期望,概率题,最重要的就是对式子进行化简,有的时候需要优化式子,一边转移,一边更新
3.期望dp还是尽量从后面开始推
4.概率期望dp,有时候需要将fi与fi-1进行比较,从而找规律,常用除和减

2023.1.9

1.换根dp,有时需要借助中间变量,注意哪里是加,哪里是减
2.容斥原理,f(i)为求i轮淘汰的概率,不用知道顺序(也就是我一定要再最后一个淘汰),f(i)-f(i-1)也就是第i轮淘汰的概率。这个减法挺奇妙的。
3.有些期望题,就是要巧妙的找出所有的情况,然后对权值进行相加,并且往往采用容斥列出所有的情况。
4.nan,not a number,也就是有非法的情况,例如sqrt(-1),1/0这种

2023.1.10

1.固定次数和固定目标的dp是不一样的。一个从前面,一个从后面。涂n次和涂满问题。
2.固定次数的话,还要看概率是否会发生变化。电梯进人问题和格子涂色问题。前者概率不变,后者概率变化。
3.概率是需要正推的,并且需要用到子状态。枚举会转移到什么样的子状态,然后将概率进行相加。D. Bag of mice就是要看我在这里赢的概率,但是是需要枚举完所有取的方案,然后下一次到我了。也就是
要手动列举所有的状态。
4.高斯消元,矩阵逆推时有后效性,可以推f(i)+f(i+1)这种的答案,然后用高斯消元求解。
如果每一项都只和几项有关的话,是可以做到O1的高斯消元的

2023.1.11

1.考虑独立事件,总的概率是pow(p,k)。
2.如果一个事件发生的概率是p,(p是一个对mod求逆元的数),那么他不发生的概率是mod+1-p
3.涂格子时,如果每一个点都有自己的概率,则需要用状压进行枚举计算
4.每一步都要计算期望概率,不要漏掉
PS:虽然还不是很会,但我至少不会怕概率期望的题了,也就是正常的DP找转移方程,然后用到了一些概率期望的知识点。
概率从前面,期望从后面,有时候需要枚举所有的状态,这个一般都需要优化。

2023.1.12

1.KMP算法,其实也就是匹配算法,在一定程度上也可以使用哈希。
对要查找的串进行处理,然后进行匹配。
ne数组的含义,对于前面1-i的字符中,前缀和后缀相等的最大长度,所以可以进行直接跳转,这个定义挺重要的。
2.如果f(i)匹配成功了,那么f(ne(i))也是匹配成功的,前面的都是匹配成功的1-i-1也都是。有些题目需求不同,可以简化成一种树形结构。
(也就是对于多个有重复结构的串需要查找,可以往这方面思考。例如:回文大师)。
3.非连续串的查找,也就是用一个数组记录一下某个数下一次出现的最早的位置,然后进行递归就可以了,子串查询
4.如果要进行反着匹配,就直接反着遍历,正着匹配,那就看ne[len]。看ne[len],然后递归,也就是找后缀相等的长度,ne[len]这个东西用的挺多的。

2023.1.13

1.拉链法:一倍空间大小就可以了。形式类似于链式前向星存图。
2.开放式寻址法:两倍的空间大小,也就是暴力向上加,直到找到这个数没有出现的位置
3.有时候需要哈希表先对字符串(或数组)进行预处理,然后存图,并且用拉链法进行查找
4.区间查找第k大值(或者说其他的某些区间信息,而不是最值),用权值线段树。同理,区间查找异或最大值,用可持久化01tire,两者原理是一样的,只是开头需要添0,然后l--,r--

2023.1.14

1.border树,也就是对kmp的ne数组进行了处理,化成了一个树形结构。
可以用了查找俩个人的公共前缀,统计前缀的数量。
2.查找全部区间问题,先固定左端点,然后找下一个满足条件的端点。

2023.1.15

1.树上差分两种模式,一种是树剖。一种是给每个点一个编号,然后用树状数组进行动态维护。

2023.1.16

1.AC自动机。先看看KMP,是可以把一个串在多个串里面进行匹配。AC自动机,是把多个串在一个串里面进行匹配。

2023.1.20

1.AC自动机的两种优化。
(1)用topsort,先存储这个点走过的数量,然后进行走图,常用于一次匹配
(2)用last数组记录上一个跳转的有答案的地方,常用于多次匹配

posted @   basicecho  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示